讀入獨(dú)立鍵,并點(diǎn)亮相應(yīng)的LED燈
***************************************************************************
006.asm
讀入獨(dú)立鍵盤上的按鍵,并把相應(yīng)的LED燈點(diǎn)亮,若一段時(shí)間無(wú)按鍵,剛循環(huán)點(diǎn)亮LED
接線:P0口接八位LED
P2口接八位獨(dú)立按鍵
定時(shí)器T0計(jì)時(shí),中斷方式
***************************************************************************/
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INT_T0
ORG 0100H
MAIN: ;主程序入口
MOV SP,#50H ;設(shè)置堆棧
MOV TMOD,#01H ;設(shè)置定時(shí)模式
MOV TH0,#15H ;賦定時(shí)初值
MOV TL0,#9FH
CLR 20H.0 ;初始化按鍵標(biāo)志
MOV R2,#0FFH ;初始化鍵值
MOV R3,#01H ;初始化循環(huán)閃鑠初值
MOV R4,#00H ;初始化定時(shí)初值
SETB TR0 ;啟動(dòng)定時(shí)器
MOV IE,#82H ;開(kāi)中斷
LOOP:
LCALL KEY_READ ;掃描鍵盤
L1: JB 20H.0,LIGH ;有鍵輸入,則去點(diǎn)亮相應(yīng)LED
JBC 20H.0,LOOP
MOV A,R4
CJNE A,#0C8H,LOOP ;否則去判斷定時(shí)是否到,定時(shí)到,循環(huán)點(diǎn)亮八位LED
LCALL LEED
LJMP L1
/*點(diǎn)亮相應(yīng)LED*/
LIGH:
MOV A,R2 ;取鍵值
MOV P0,A ;輸出
RET
/*循環(huán)點(diǎn)亮LED*/
LEED:
MOV A,R3
LOOP1:
CPL A
MOV P0,A
LCALL KEY_READ
JB 20H.0,RETUN0
MOV R0,#0FFH
LCALL DELAY
MOV A,R3
RL A
MOV R3,A
CJNE A,#80H,LOOP1
LOOP2:
CPL A
MOV P0,A
LCALL KEY_READ
JB 20H.0,RETUN0
MOV R0,#0FFH
LCALL DELAY
MOV A,R3
RR A
MOV R3,A
CJNE A,#01H,LOOP2
SJMP LOOP1
RETUN0:
RET
/*鍵盤掃描程序*/
KEY_READ:
CLR EA ;掃描鍵盤時(shí)關(guān)定時(shí)中斷
MOV A,P2
CJNE A,#0FFH,DE
LJMP RETUN
DE: MOV R0,#8AH
LCALL DELAY
MOV A,P2
CJNE A,#0FFH,DE0
LJMP RETUN
DE0:MOV R2,A
SETB 20H.0
MOV R4,#00H
DE1:MOV A,P2
CJNE A,#0FFH,DE1
RETUN:
SETB EA
RET
/*中斷子程序*/
INT_T0:
CLR EA
PUSH ACC
MOV TH0,#15H ;重賦定時(shí)初值
MOV TL0,#9FH
INC R4
POP ACC
SETB EA
RETI
/*延時(shí)子程序 */
DELAY:
D1: MOV R1,#0FFH
D0: DJNZ R1,D0
DJNZ R0,D1
RET
END
led燈相關(guān)文章:led燈原理
評(píng)論