📄 bcd码的9999.txt
字号:
CURR_NUM EQU 30H ;BCD
CURR_NIM EQU 70H
org 0000H
jmp MAIN
;*******************************************************
org 0030H ;start program from 0030H
MAIN:
mov p0,#0FFH
mov p1,#0FFH
mov p2,#0FFH
mov p3,#0FFH
mov CURR_NUM,#00H
mov CURR_NIM,#00H
clr p3.3
MAIN_LOOP:
jb p2.7,KEY_2
call DELAY
call MUN_ADD
jmp NEXT_LOOP
KEY_2:
jb p2.6,NEXT_LOOP
call DELAY
call MUN_SUB
NEXT_LOOP:
call DISPLAY_NUM
jmp MAIN_LOOP
ret
;************************************************************
DISPLAY_NUM:
mov a,CURR_NUM
anl a,#0FH
mov dptr,#TAB_LED
movc a,@a+dptr
mov p0,a ;Display the number
mov p2,#11111011B
call DELAY_DISP
;Display the high value
mov a,CURR_NUM ;CURR_NUM is low 4
swap a
anl a,#0FH
mov dptr,#TAB_LED
movc a,@a+dptr
mov p0,a
mov p2,#11110111B
call DELAY_DISP
mov a,CURR_NIM ;CURR_NIM is the high 4
anl a,#0FH
mov dptr,#TAB_LED
movc a,@a+dptr
mov p0,a ;Display the number
mov p2,#11101111B
call DELAY_DISP
;Display the high value
mov a,CURR_NIM
swap a
anl a,#0FH
mov dptr,#TAB_LED
movc a,@a+dptr
mov p0,a
mov p2,#11011111B
call DELAY_DISP
ret
;***********************************************************
MUN_ADD:
mov a,CURR_NUM
cjne a,#99H,INC_NUM
;if CURR_NUM=099H,the resest CURR_NUM
mov CURR_NUM,#00H
mov a,CURR_NIM
cjne a,#99H,INC_NIM
;if CURR_NUM=099H,the resest CURR_NUM
mov CURR_NIM,#00H
;jmp NUM_ADD_EXIT
INC_NIM:
anl a,#0FH
cjne a,#99H,NIM_ADD_1
mov a,CURR_NIM
add a,#07H
mov CURR_NIM,a
jmp NUM_ADD_EXIT
INC_NUM:
anl a,#0FH
cjne a,#99H,NUM_ADD_1
mov a,CURR_NUM
add a,#07H
mov CURR_NUM,a
jmp NUM_ADD_EXIT
NIM_ADD_1:
;simple add
inc CURR_NIM
;jmp NUM_ADD_EXIT
NUM_ADD_1:
;simple add
inc CURR_NUM
;jmp NUM_ADD_EXIT
NUM_ADD_EXIT:
ret
;**************************************************************
MUN_SUB:
mov a,CURR_NUM
jz NUM_SUB_99
;if(low 4-bits)=0,then(high 4-bits)-1 and (low 4-bits)=9
anl a,#0FH
cjne a,#00H,NUM_SUB_1
;high doc
mov a,CURR_NUM
clr c
subb a,#7H
mov CURR_NUM,a
jmp NUM_SUB_TEXT
NUM_SUB_1:
dec CURR_NUM
jmp NUM_SUB_TEXT
NUM_SUB_99:
mov CURR_NUM,#99H
mov a,CURR_NIM
jz NIM_SUB_99
;if(low 4-bits)=0,then(high 4-bits)-1 and (low 4-bits)=9
anl a,#0FH
cjne a,#00H,NIM_SUB_1
;high doc
mov a,CURR_NIM
clr c
subb a,#7H
mov CURR_NIM,a
jmp NUM_SUB_TEXT
NIM_SUB_1:
dec CURR_NIM
jmp NUM_SUB_TEXT
NIM_SUB_99:
mov CURR_NIM,#99H
NUM_SUB_TEXT:
ret
;*************************************************************
DELAY:
mov R7,#150
DELAY_LOOP:
mov R6,#200
djnz R6,$
mov R6,#200
djnz R6,$
djnz R7,DELAY_LOOP
ret
;*************************************************************
DELAY_DISP:
mov R7,#7
DELAY_DISP_LOOP:
mov R6,#200
djnz R6,$
mov R6,#200
djnz R6,$
djnz R7,DELAY_DISP_LOOP
ret
;*************************************************************
TAB_LED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;***********************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -