实验一 P1口亮灯实验
PAGE 17
实验一 P1口亮灯实验
一、实验目的
(1)学习P1口的使用方法;(2)学习延时子程序的编写。
二、实验预备知识
(l)Pl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。
(2)本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。
三、实验内容
P1口输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
四、实验程序框图
五、实验接线图
六、实验步骤
P1.0~P1.7用导线连至L1~L8,运行程序后,观察发光二极管闪亮移位情况。
七、程序清单 文件名: HW01.c
#include
#include
#define uchar unsigned char
void delay(unsigned int i)
{
unsigned int j,k;
for(k=0;k
for(j=0;j<1000;j++);
}
void main(void)
{uchar aa;
P1=0xff;
aa=0xfe;
while(1)
{
P1=aa;
aa=_crol_(aa,1);
delay(10);
}
}
实验二 P1口转弯灯实验
实验二 P1口转弯灯实验
一、实验目的
进一步了解P1口的使用,学习C语言编程方法及调试技巧。
二、实验内容
P1.0接开关上拨为5V,左转弯灯闪亮,P1.1接开关为5V时右转弯灯闪亮,P1.0,P1.1接开关同时接5V或接地时,转弯灯均不闪亮。
三、实验程序框图
四、实验接线图
五、实验步骤
P1.0 接K1,P1.1接K2,P1.4~P1.7接L1、L2、L7、L8,连续运行本程序,拨动开关K1、K2,应看到转弯灯正确闪亮,在用单步方式调试本程序时需修改延时子程序,(例可把延时程序第一个字节改成返回指令22H),以便观察。
六、程序清单 文件名:HW02.c
#include
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
void delay(unsigned int i)
{
unsigned int j,k;
for(k=0;k
for(j=0;j<1000;j++);
}
void main(void)
{
unsigned int flag=0;
P1=0xff;
while(1)
{
if(P1_0==0 && P1_1!=0)
{ if(flag==0)
{P1_4=0;
P1_5=0;
P1_6=1;
P1_7=1;
delay(20);
flag=1;}
else if(flag==1)
{P1_4=1;
P1_5=1;
P1_6=1;
P1_7=1;
delay(20);
flag=0;}
}
else if(P1_1==0 && P1_0!=0)
{ if(flag==0)
{P1_4=1;
P1_5=1;
P1_6=0;
P1_7=0;
delay(20);
flag=1;}
else if(flag==1)
{P1_4=1;
P1_5=1;
P1_6=1;
P1_7=1;
delay(20);
flag=0;}
}
else
{P1_4=1;
P1_5=1;
P1_6=1;
P1_7=1;
}
}
}
实验三 P