;**********************************************************
;第18組 黃天華94413046 王佳音94413016
;期末考第二題
;**********************************************************
ORG 00H
JMP START
ORG 03H
JMP GET_KEY
ORG 20H
START: MOV SP,#70H
CALL INIT_8279 ; 初始 8279 設定
MOV R0,#00
;=====
; 設定8279狀態字碼
;=====
GET_KEY:
CALL DELAY
MOV DPTR,#8061H
MOVX A,@DPTR
ANL A,#0FH
JZ NO_KEY
MOV DPTR,#8060H
MOVX A,@DPTR
JNB ACC.7,STOP
NO_KEY:
MOV A,R0
MOV DPTR,#CODE_TABLE
MOVC A,@A+DPTR ; 讀取鍵值之七段碼
MOV DPTR,#8060H
MOVX @DPTR,A
JMP CASE
INIT_8279:
MOV A,#10H ;┐
MOV DPTR,#8061H ;│8 個字元 , 右進, 雙鍵鎖住
MOVX @DPTR,A ;┘
MOV A,#34H ;┐規劃時序為 clock / 20
MOVX @DPTR,A ;┘
MOV A,#0DFH ;┐清除 RAM 資料
MOVX @DPTR,A ;┘
NOT_CLEAR_OK:
MOVX A,@DPTR ; 讀取 8279 狀態字碼
JNB ACC.7,NOT_CLEAR_OK; 若未清除完畢,跳至 NOT_CLEAR_OK
MOV A,#40H ;┐ 設定讀取動作至 FIFO RAM 讀取
MOVX @DPTR,A ;┘
MOV A,#90H ;┐ 設定寫入動作寫入至 DISPLAY RAM
MOVX @DPTR,A ;┘
RET
STOP:
MOV DPTR,#8061H
MOV A,#0DFH
MOVX A,@DPTR
MOV DPTR,#8060H
MOVX A,@DPTR
JNB ACC.6,NO_KEY
JMP STOP
CASE:
INC R0
CJNE R0,#00010000B,GET_KEY
MOV R0,#00H
JMP GET_KEY
;=====
;延遲0.5秒
;=====
DELAY:
MOV R7,#05
L3:
MOV R6,#200
L2:
MOV R5,#248
NOP
L1:
DJNZ R5,L1
DJNZ R6,L2
DJNZ R7,L3
RET
CODE_TABLE:
DB 0C0H,0F9H,0A4H,0B0H ;0,1,2,3
DB 99H,92H,82H,0F8H ;4,5,6,7
DB 80H,90H,88H,83H ;8,9,A,B
DB 0C6H,0A1H,86H,8EH ;C,D,E,F
END
全站熱搜
留言列表