54301b6b20231ad6.jpg (39.8 KB, 下載次數(shù): 170)
下載附件
題目
2016-10-16 10:56 上傳
123.png (37.3 KB, 下載次數(shù): 152)
下載附件
仿真
2016-10-16 11:01 上傳
ORG 0000H
START:MOV R3,#08H
MOV 08H,#0H
MOV 09H,#0H
MOV 0AH,#0H
MOV 0BH,#0H
;MOV 08H,#3FH
;MOV 09H,#3FH
;MOV 0AH,#3FH
;MOV 0BH,#3FH
TEST: MOV P3,#0F0H ;P3.0~P3.3輸出0,P3.4~P3.7輸出1,作為輸入位
MOV A,P3 ;讀鍵盤,檢測有無按鍵按下
ANL A,#0F0H ;屏蔽P3.0~3.3,檢測P3.4~P3.7是否全為一
CJNE A ,#0F0H,HAVE ;P3.4~P3.7不全為1,有鍵按下
LJMP DIS ;P3.4~P3.7全為1,無鍵按下,轉(zhuǎn)顯示
HAVE: MOV A,#0FEH ;有鍵按下,逐行掃描鍵盤,置掃描初值
NEXT: MOV B,A ;掃描碼暫存與B
MOV P3,A ;輸出掃描碼
READ: MOV A,P3 ;讀鍵盤
ANL A,#0F0H ;屏蔽P3.0~P3.3,檢測P3.4~P3.7是否全為1
CJNE A,#0F0H,YES ;P3.4~P3.7不全為一,該行有鍵按下
MOV A,B ;被掃描行無鍵按下,準(zhǔn)備查下一行
RL A ;置下一行掃描碼
CJNE A,#0EFH,NEXT ;未掃描到最后一行,則循環(huán)
YES: ACALL DAY ;延時,去抖動
AREAD:MOV A,P3 ;再讀鍵盤
ANL A,#0F0H ;屏蔽P3.0~P3.3,保留P3.4~P3.7
MOV R2,A ;暫存列碼
MOV A,B
ANL A,#0FH ;取行掃描碼
ORL A,R2 ;行碼,列碼合并為鍵編碼
YES1: MOV B,A ;鍵編碼存于B
CJNE R3,#0CH,SAM38 ;轉(zhuǎn)鍵分析處理程序
MOV R3,#08H
MOV 08H,#0H
MOV 09H,#0H
MOV 0AH,#0H
MOV 0BH,#0H
LJMP SAM38 ;轉(zhuǎn)鍵分析處理程序
DAY: MOV R6,#0AH ;外循環(huán)10次 6MHz晶振
DL2: MOV R7,#7DH ;內(nèi)循環(huán)7DH次
DL1: NOP
NOP ;空操作指令
DJNZ R6,DL1
DJNZ R7,DL2
RET
SAM38:MOV DPTR,#TAB2 ;置鍵碼表首地址
MOV A,#0 ;表的起始位的偏移量為0
NEXT1:PUSH ACC ;MOV R3,A
MOVC A,@A+DPTR
CJNE A,B,AGAN ;將B中的值和鍵碼表的值比較
LJMP SAM39
AGAN: POP ACC ;不相等,則比較下一個
INC A ;序號加1
CJNE A,#10H,NEXT1
PUSH ACC
LJMP SAM39
SAM39:MOV DPTR,#TAB1
POP ACC
MOVC A,@A+DPTR
;MOV DPTR,#0H
;MOV @R3+DPTR,A
CJNE R3,#0CH,SAM40
MOV R3,#08H
PUSH ACC
MOV A,R3
MOV R0,A
POP ACC
;MOV R0,R3
INC R3
MOV @R0,A
MOV A,#0H
MOV 09H,A
MOV 0AH,A
MOV 0BH,A
LJMP DIS
SAM40:;MOV R0,R3
PUSH ACC
MOV A,R3
MOV R0,A
POP ACC
MOV @R0,A
INC R3
LJMP DIS
DIS: MOV DPTR,#08H
MOV R0,#0 ;R0存放字形表偏移位
MOV R1,#01H ;R1存放數(shù)碼表位選代碼
DISP: MOV A,R0
MOVC A,@A+DPTR ;查字形碼表
MOV P2,#0H ;清顯示
;ACALL DAY
MOV P1,A ;送至P1口輸出
;ACALL DAY
MOV A,R1
MOV P2,A ;輸出位選碼
ACALL DAY ;延時
;MOV A,R1
INC R0 ;指向下一位字形
RL A ;指向下一位
MOV R1,A
CJNE R1,#10H,DISP ;四個數(shù)碼管是否顯示完畢
LJMP TEST
TAB1: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;"0----15"的字形碼
TAB2: DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H
END
|