基于51單片機(jī)秒表的程序設(shè)計(jì)
;主程序
;――――――――――初始化程序―――――――――――
MAIN: MOV TMOD,#61H ;置T0方式1定時(shí),T1方式2計(jì)數(shù)
MOV TH0,#3CH ;T0置初值
MOV TL0,#0B0H
MOV TH1,#0C4H ;T1置初值
MOV TL1,#0C4H
MOV DPTR,#4400H ;8155控制口地址送DPTR
MOV A,#43H ;設(shè)置8155工作方式字
MOVX @DPTR,A ;設(shè)置PA、PB口輸出,PC口輸入
MOV 20H,#00H ;60秒計(jì)數(shù)單元置初值
MOV 21H,#14H ;50ms計(jì)數(shù)單元置初值
MOV SP,#3FH ;堆棧指針置初值
MOV R2,#08H n, bsp; ;LED待顯示位數(shù)送R2
MOV R0,#30H ;顯示緩沖區(qū)首址送R0
STAR: MOV @R0,#00H ;顯示緩沖區(qū)清零
INC R0
DJNZ R2,STAR
CLR A ;累加器清零
;―――――――――――鍵盤(pán)查詢(xún)程序――――――――――
KEY: ACALL KS ;調(diào)按鍵查詢(xún)子程序判是否有鍵按下
JNZ K1 ;有鍵按下轉(zhuǎn)移
ACALL DISP ;無(wú)鍵按下,調(diào)顯示子程序延時(shí)
AJMP KEY ;繼續(xù)查詢(xún)按鍵
;―――――――――――鍵盤(pán)掃描程序――――――――――
K1: ACALL DISP ;鍵盤(pán)去抖延時(shí)
ACALL DISP
ACALL KS ;再次判別是否有鍵按下
JNZ K2 ;有鍵按下轉(zhuǎn)移
AJMP KEY ;無(wú)按鍵,誤讀,繼續(xù)查詢(xún)按鍵
K2: MOV R3,#0FEH ;首列掃描字送R3
MOV R4,#00H ;首列號(hào)送R4
K3: MOV DPTR,#4401H ;PA口地址送DPTR,開(kāi)始列掃描
MOV A,R3
MOVX @DPTR,A ;列掃描字送PA口
INC DPTR ;指向PC口
INC DPTR
MOVX A,@DPTR ;讀取行掃描值
JB ACC.0,L1 ;第0行無(wú)鍵按下,轉(zhuǎn)查第1行
MOV A,#00H ;第0行有鍵按下,行首鍵號(hào)送A
AJMP LK ;轉(zhuǎn)求鍵號(hào)
L1: JB ACC.1,L2 ;第1行無(wú)鍵按下,轉(zhuǎn)查第2行
MOV A,#08H ;第1行有鍵按下,行首鍵號(hào)送A
AJMP LK ;轉(zhuǎn)求鍵號(hào)
L2: JB ACC.2,L3 ;第2行無(wú)鍵按下,轉(zhuǎn)查第3行
MOV A,#10H ;第2行有鍵按下,行首鍵號(hào)送A
AJMP LK ;轉(zhuǎn)求鍵號(hào)
L3: JB ACC.3,NEXT ;第3行無(wú)鍵按下,轉(zhuǎn)查下一列
MOV A,#18H ;第3行有鍵按下,行首鍵號(hào)送A
AJMP LK
LK: ADD A,R4 ;形成鍵碼送A
PUSH ACC ;鍵碼入棧保護(hù)
K4: ACALL DISP
ACALL KS ;等待鍵釋放
JNZ K4 ;未釋放,等待
POP ACC ;鍵釋放,彈棧送A
AJMP PR ;轉(zhuǎn)鍵盤(pán)處理程序
NEXT: INC R4 ;修改列號(hào)
MOV A,R3
JNB ACC.3,KEY ;4列掃描完返回按鍵查詢(xún)狀態(tài)
RL A ;未掃描完,改為下列掃描字
MOV R3,A , nbsp; ;掃描字暫存R3
AJMP K3 ;轉(zhuǎn)列掃描程序
;―――――――――――鍵盤(pán)處理程序―――――――――――――――
PR: CJNE A,#00H,PR01 ;不是KE0鍵碼,轉(zhuǎn)KE1鍵
AJMP KE0 ;轉(zhuǎn)KE0鍵處理程序
PR01: CJNE A,#01H,PR02 ;不是KE1鍵碼,轉(zhuǎn)KE2鍵
AJMP KE1 ;轉(zhuǎn)KE1鍵處理程序
PR02: CJNE A,#02H,PR03 ;不是KE2鍵碼,返回按鍵查詢(xún)
AJMP KE2 ;轉(zhuǎn)KE2鍵處理程序
PR03: AJMP KEY
KE0: SETB TR0 ;啟動(dòng)定時(shí)器T0
SETB TR1 ;啟動(dòng)定時(shí)器T1
SETB ET0 ;允許定時(shí)器T0中斷
SETB EA ;開(kāi)中斷
AJMP KEY ;返回鍵盤(pán)查詢(xún)狀態(tài)
燃?xì)鈭?bào)警器相關(guān)文章:燃?xì)鈭?bào)警器原理
評(píng)論