文档介绍:实验一闪烁灯
一、实验任务
,使L1在不断地一亮一灭,。
二、实验内容
电路原理图
2、程序流程图
3、c语言源程序
#include<>
sbit p0=P1^0;
void delay02s(void)
{
unsigned char i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void main()
{
while(1)
{
p0=0;
delay02s();
p0=1;
delay02s();
}
}
4、汇编语言源程序
START:CLR ;
LCALL DELAY ;
SETB ;
LCALL DELAY ;
LJMP START ;循环
DELAY:MOV R5,#20 ;延时子程序
D1:MOV R6,#20
D2:MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
实验二广告灯的左移右移
实验任务:
做单一灯的左移右移,硬件电路如图所示,八个发光二极管L1--,输出“0”时,发光二极管亮,→→→→┅→→→┅→,重复循环。
二、实验内容
1、电路原理图
2、程序流程图
3、汇编语言源程序
ORG 0
START: MOV R2,#8
MOV A,#0FEH
SETB C
LOOP: MOV P1,A
LCALL DELAY
RLC A
DJNZ R2,LOOP
MOV R2,#8
LOOP1: MOV P1,A
LCALL DELAY
RRC A
DJNZ R2,LOOP1
LJMP START
DELAY: MOV R5,#20 ;
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
4、c语言源程序
#include <>
unsigned char i;
unsigned char temp;
unsigned char a,b;
void delay(void)
{unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
void main(void)
{
while(1)
{
temp=0xfe;
P1=temp;
delay();
for(i=1;i<8;i++)
{
a=temp<<i;
b=temp>>(8-i);
P1=a|b;
delay();
}
for(i=1;i<8;i++)
{
a=temp>>i;
b=temp<<(8-i);
P1=a|b;
delay();
}
}
}
实验三按键识别方法
实验任务:
每按下一次开关SP1,计数值加1,。
二、实验内容
1、电路原理图
2、程序流程图
3、c语言源程序
#include <>
unsigned char count;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void main(void)
{
while(1)
{
if(P3_7==0)
{
delay10ms();
if(P3_7==0)
{
count++;
if(c
ount==16)
{
count=0;
}
P1=~count;
while(P3_7==0);
}
}
}
}
4、汇编语言源程序
ORG 0
START: MOV R1,#00H ;初始化R1为0,表示从0开始计数
MOV A,R1 ;
CPL A ;取反指令
MOV P1,A ;送出P1端口由发光二极管显示
REL: JNB ,REL ;判断SP1是否按下
LCALL DELAY10MS ;若按下,则延时1