如圖所示電路,要求完成實現(xiàn)按鈕按壓次數(shù)的計數(shù)及顯示,按一次按鈕,計數(shù)值加1(要求按十進制累加)。
計數(shù)及顯示范圍是:0~99,超過99則自動歸零。
要求對按鈕的檢測用中斷實現(xiàn),數(shù)碼顯示用動態(tài)掃描(數(shù)碼管為共陰數(shù)碼管)。
請設計實現(xiàn)該功能的完整程序。
;----------------------------------------------------------------------
;用PROTEUS仿真,顯示器使用7SEG-MPX2-CC
;===================================
ORG 0000H
AJMP START
ORG 0013H
AJMP X1_INT
START:
MOV SP, #60H
MOV IE, #84H
MOV R3, #0
;-------------------
MAIN:
LCALL DISPLAY
SJMP MAIN
;-----------------------------------
X1_INT:
MOV A, R3
ADD A, #1
DA A
MOV R3, A ;R3 = 00~99H
X1_LOOP:
LCALL DISPLAY
JNB P3.3, X1_LOOP
RETI
;-----------------------------------
DISPLAY:
MOV A, R3
ANL A, #0FH ;取出個位.
MOV DPTR, #TAB
MOVC A, @A + DPTR
MOV P2, #0FFH ;關(guān)閉顯示.
MOV P0, A ;輸出段碼.
CLR P2.1 ;P2.1=0
LCALL DELAY
;-------------------
MOV A, R3
SWAP A
ANL A, #0FH ;取出十位.
MOVC A, @A + DPTR
MOV P2, #0FFH ;關(guān)閉顯示.
MOV P0, A ;輸出段碼.
CLR P2.0 ;P2.0=0
LCALL DELAY
RET
;-----------------------------------
DELAY:
MOV R4, #250
DJNZ R4, $
RET
;-----------------------------------
TAB:
DB 3FH, 06H, 5BH, 4FH, 66H
DB 6DH, 7DH, 07H, 7FH, 6FH
end