标题:
按键控制的单片机流水灯(上至下再下至上)
[打印本页]
作者:
wzh4562
时间:
2016-11-22 13:00
标题:
按键控制的单片机流水灯(上至下再下至上)
C51的流水灯 老师布置的作业,上至下再下至上的流水灯,并且可以用按键来控制.
0.png
(29.42 KB, 下载次数: 96)
下载附件
2016-12-5 02:57 上传
0.png
(61.73 KB, 下载次数: 105)
下载附件
2016-12-5 02:57 上传
资料下载:
按键控制的流水灯(上至下再下至上).zip
(79.29 KB, 下载次数: 14)
2016-11-22 12:59 上传
点击文件名下载附件
老师要求的按键流水灯 C51
下载积分: 黑币 -5
c语言的流水灯程序:
#include<reg51.h>
#include<intrins.h> //包含循环左、右移位函数的头文件
#define led P1
sbit key1=P3^2;
sbit key2=P3^3;
unsigned char a,b;
void delay(unsigned char m)
{
unsigned i,j;
for(i=0;i<=m;i++)
for(j=0;j<=120;j++); //这条语句大概延时1ms
}
void key1ch()
{
while(key2) //如果键2没有按下,循环执行这段程序
{
for(a=0;a<8;a++)
{
delay(500);
led=_crol_(led,1);//左移一位
while(!key2) return;//如果键2按下,退出
}
}
}
void key2ch()
{
while(key1) //如果键1没有按下,循环执行这段程序
{for(b=0;b<8;b++)
{
delay(500);
led=_cror_(led,1);//右移一位
while(!key1) return;//如果键1按下,退出
}
}
}
void main()
{
led=0xfe;
while(1)
{if(!key1)
{
delay(10);
while(key1);
key1ch();
}
else
if(!key2)
{
delay(10);
while(key2);
key2ch();
}
}
}
复制代码
汇编语言的流水灯程序:
org 0000h
ajmp main
org 0003h
ajmp int00
org 0013h
ajmp int01
org 0030h
main:mov sp,#60h
clr 20h.0
clr 20h.1
setb it0
setb it1
setb ex0
setb ex1
setb ea
key1:jnb 20h.0,key2
mov a,#0feh ;按键1处理,从上往下流动
mov r2,#8
loop1:mov p1,a
acall delay
rl a ;左移一位
jnb 20h.1,loop2 ;判断按键2是否按下,没有则按照按键1的功能执行
djnz r2,loop1
mov r2,#8
sjmp loop1
key2:jnb 20h.1,key1
mov a,#07fh
loop2: mov p1,a
acall delay
rr a
jnb 20h.0,loop1
djnz r2,loop2
mov r2,#8
sjmp loop2
int00:setb 20h.1
clr 20h.0
reti
int01:setb 20h.0
clr 20h.1
reti
delay:mov r5,#4
dl1:mov r6,#200
dl2:mov r7,#250
djnz r7,$
djnz r6,dl2
djnz r5,dl1
ret
end
复制代码
org 0000h
key:jnb p3.2,key11 ;判断是否按键1,如果是则进行按键处理
jnb p3.3,key21 ;判断是否按键2,如果是则进行按键处理
sjmp key
key11:call delay10ms ;延时10毫秒进行按键消抖
jnb p3.2,[ DISCUZ_CODE_5 ]nbsp; ;按键还是按下的,则等待键释放
acall key1
sjmp key
key21:call delay10ms
jnb p3.3,$
acall key2
sjmp key
key1:mov a,#0feh ;按键1处理,从上往下流动
mov r2,#8
loop1:mov p1,a
acall delay
rl a ;左移一位
jnb p3.3,back1 ;判断按键2是否按下,没有则按照按键1的功能执行
djnz r2,loop1
sjmp key1
back1: mov r2,#8
ret
key2:mov a,#07fh
loop2: mov p1,a
acall delay
rr a
jnb p3.2,back2
djnz r2,loop2
sjmp key2
back2: mov r2,#8
ret
delay:mov r5,#4
dl1:mov r6,#200
dl2:mov r7,#250
djnz r7,$
djnz r6,dl2
djnz r5,dl1
ret
delay10ms:
mov r6,#200
ddl2:mov r7,#250
djnz r7,$
djnz r6,ddl2
ret
end
复制代码
作者:
xiehua132
时间:
2020-4-7 15:53
完整文件吗
作者:
dilongking
时间:
2020-4-7 16:37
太好了,但还有没有另的模式编码?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1