標(biāo)題:
按鍵控制的單片機(jī)流水燈(上至下再下至上)
[打印本頁]
作者:
wzh4562
時(shí)間:
2016-11-22 13:00
標(biāo)題:
按鍵控制的單片機(jī)流水燈(上至下再下至上)
C51的流水燈 老師布置的作業(yè),上至下再下至上的流水燈,并且可以用按鍵來控制.
0.png
(29.42 KB, 下載次數(shù): 96)
下載附件
2016-12-5 02:57 上傳
0.png
(61.73 KB, 下載次數(shù): 105)
下載附件
2016-12-5 02:57 上傳
資料下載:
按鍵控制的流水燈(上至下再下至上).zip
(79.29 KB, 下載次數(shù): 14)
2016-11-22 12:59 上傳
點(diǎn)擊文件名下載附件
老師要求的按鍵流水燈 C51
下載積分: 黑幣 -5
c語言的流水燈程序:
#include<reg51.h>
#include<intrins.h> //包含循環(huán)左、右移位函數(shù)的頭文件
#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++); //這條語句大概延時(shí)1ms
}
void key1ch()
{
while(key2) //如果鍵2沒有按下,循環(huán)執(zhí)行這段程序
{
for(a=0;a<8;a++)
{
delay(500);
led=_crol_(led,1);//左移一位
while(!key2) return;//如果鍵2按下,退出
}
}
}
void key2ch()
{
while(key1) //如果鍵1沒有按下,循環(huán)執(zhí)行這段程序
{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();
}
}
}
復(fù)制代碼
匯編語言的流水燈程序:
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處理,從上往下流動(dòng)
mov r2,#8
loop1:mov p1,a
acall delay
rl a ;左移一位
jnb 20h.1,loop2 ;判斷按鍵2是否按下,沒有則按照按鍵1的功能執(zhí)行
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
復(fù)制代碼
org 0000h
key:jnb p3.2,key11 ;判斷是否按鍵1,如果是則進(jìn)行按鍵處理
jnb p3.3,key21 ;判斷是否按鍵2,如果是則進(jìn)行按鍵處理
sjmp key
key11:call delay10ms ;延時(shí)10毫秒進(jìn)行按鍵消抖
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處理,從上往下流動(dòng)
mov r2,#8
loop1:mov p1,a
acall delay
rl a ;左移一位
jnb p3.3,back1 ;判斷按鍵2是否按下,沒有則按照按鍵1的功能執(zhí)行
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
復(fù)制代碼
作者:
xiehua132
時(shí)間:
2020-4-7 15:53
完整文件嗎
作者:
dilongking
時(shí)間:
2020-4-7 16:37
太好了,但還有沒有另的模式編碼?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1