程序在keil中模擬沒找出問題來,但是下載到單片機里面就是運行不了,
鍵盤是p3.0-3.3 ,led燈是p2.0-p2.3,想實現(xiàn)按p3.0一下,p2.0點亮\或者滅。其他按鍵類推。燒錄后,沒實現(xiàn)功能,具體為按鍵后燈沒任何反應(yīng)。
ORG 0000H
AJMP START
ORG 0080H
START:
MOV P2,#0FFH ;全滅p2口led
MOV P3,#0FFH;使得P3口全部高電平,準(zhǔn)備獨立按鍵初始狀態(tài)
KEYCHECK1: ;按鍵檢查是否有1->0,改變
MOV A,#00H ;清0累加器內(nèi)數(shù)值
JNB P3.0, DELAY
JNB P3.1,DELAY
JNB P3.2,DELAY
JNB P3.3,DELAY
LJMP KEYCHECK1
KEYCHECK2: ;延時后,是否還保持低電平,是則調(diào)用鍵盤釋放程序,否則跳到keycheck1
JNB P3.0,LOOP
JNB P3.1,LOOP
JNB P3.2,LOOP
JNB P3.3,LOOP
LJMP START
DELAY: ;延時程序,目的為消除機械抖動
MOV R7,#100
D1: MOV R6,#100
DJNZ R6,$
DJNZ R7,D1
LJMP KEYCHECK2
LOOP: ;判斷鍵盤是否釋放,是則繼續(xù),否則跳到loop做自動循環(huán)
MOV A,P3 ;給A輸入p3狀態(tài)
D2:
MOV R1,P3 ;用r1和ff比較大小,從而判斷是否釋放
CJNE R1,#0FFH,D2
JNB ACC.0,K1 ;判斷那個鍵按下,點亮那個燈,a一直帶P3的值
JNB ACC.1,K2
JNB ACC.2,K3
JNB ACC.3,K4
LJMP START
K1: ;取反輸出口,點亮和熄滅燈
CPL P2.0
LJMP START
K2:
CPL P2.1
LJMP START
K3:
CPL P2.2
LJMP START
K4:
CPL P2.3
LJMP START
END
|