單片機(jī)51小實(shí)驗(yàn)---跑馬燈
;輸入為開(kāi)關(guān)按鍵
ORG 0000H
JMP8: MOV P2,#0FFH ;將所在口置1,即設(shè)為輸入方式
MOV A,#0 ;初始化R1
MOV R1,A
JB P2.0,SHOW1 ;判斷P2口,若為1則轉(zhuǎn)入相應(yīng)的處理程序
JB P2.1,SHOW2
JB P2.2,SHOW3
JB P2.3,SHOW4
JB P2.4,SHOW5
JB P2.5,SHOW6
JB P2.6,SHOW7
JB P2.7,SHOW8
JMP JMP8
;P2口對(duì)應(yīng)的處理部分
SHOW1:MOV A,#1
MOV R0,A
ACALL PRO ;PRO為處理子程序
SHOW2:MOV A,#2
MOV R0,A
ACALL PRO
SHOW3:MOV A,#3
MOV R0,A
ACALL PRO
SHOW4:MOV A,#4
MOV R0,A
ACALL PRO
SHOW5:MOV A,#5
MOV R0,A
ACALL PRO
SHOW6:MOV A,#6
MOV R0,A
ACALL PRO
SHOW7:MOV A,#7
MOV R0,A
ACALL PRO
SHOW8:MOV A,#8
MOV R0,A
ACALL PRO
RET
PRO:ACALL OUT ;OUT為向P2口輸出子程序
CLR 20H ;將位20H作為是否跳到JMP8的標(biāo)志,1則跳轉(zhuǎn)
ACALL PP ;PP為判斷P2口是否有新的按鍵
JB 20H,JMP8
ACALL XG ;XG為修改R1R0的值
JMP PRO
RET
OUT:MOV A,R1
MOV P1,A
MOV A,R0
MOV P0,A
ACALL DELAY ;DELAY為延時(shí)1024us的子程序
RETDELAY:MOV A,#0FFH
MOV R3,A
TT1:NOP
NOP
NOP
NOP
DJNZ R3,TT1
RET
PP: JB P2.0,S
JB P2.1,S
JB P2.2,S
JB P2.3,S
JB P2.4,S
JB P2.5,S
JB P2.6,S
JB P2.7,S
SETB 20H
S:RET
XG: MOV A,R1 ;將R1R0十六位進(jìn)行循環(huán)移位
MOV C,ACC.7
MOV A,R0
RLC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
RET
END
JMP8:
;P2口對(duì)應(yīng)的處理部分
SHOW1:MOV A,#1
SHOW2:MOV A,#2
SHOW3:MOV A,#3
SHOW4:MOV A,#4
SHOW5:MOV A,#5
SHOW6:MOV A,#6
SHOW7:MOV A,#7
SHOW8:MOV A,#8
OUT:MOV A,R1
PP: JB P2.0,S
XG: MOV A,R1
評(píng)論