📄 noname1.asm
字号:
key1 bit p3.0
key2 bit p3.1
led1 equ p0 ;赋值
led2 equ p2
;==================================================================
org 0000h
jmp main
org 0030h ;程序开始执行的位置
main:mov a,#00h
mov r0,#0
mov r4,#0
mov p3,#0ffh
mov led1,#0c0h ;初始化显示"0"
mov led2,#0c0h ;初始化显示"0"
jmp k0 ;转到判断加减法程序
;===============================================================
k0:
jb key1,l0 ;加法键判断,
jmp k1 ;按下去则转到加法程序
;================================================================
k1: inc r0
cjne r0,#10,k2 ;判断加法个位,小于9转到加法个位继续加
mov r0,#0 ;加法个位超过9则r0清零
jmp k3 ;转到加法十位
;=============================================================
k2: mov a,r0
mov dptr,#tab
movc a,@a+dptr
mov led2,a ;加法个位程序
jnb key1,$ ;等待键放开
jmp k0 ;加完则返回判断加减法键
;===============================================================
l0: mov r2,#255
l1: mov r1,#255
djnz r1,$
djnz r2,l1 ;延时程序
jnb key2,d0 ;减法键判断,按下去则转到减法程序
jmp k0 ;返回判断加减法键
;===============================================================
k3: inc r4
cjne r4,#11,k4 ;判断十位是否是"9",不是则可继续加
mov r4,#0 ;十位是"9",则r4清零
jmp main ;十位是"9",则返回主程序清零,进行新一轮加法
k4: mov led2,#0c0h
mov a,r4
mov dptr,#tab
movc a,@a+dptr
mov led1,a ;加法十位的程序
jnb key1,$ ;等待键放开
jmp l0 ;加完返回判断加减法键
;===============================================================
d0:cjne r0,#0,d1 ;判断减法各位是否为零,不是零则可继续往下减
jmp d2 ;减法个位为零则转到十位去减
;===============================================================
d1:dec r0
mov a,r0
mov dptr,#tab
movc a,@a+dptr
mov led2,a ;减法个位程序
jnb key2,$ ;等待键放开
jmp k0 ;减完返回判断加减法键
;================================================================
d2:cjne r4,#0,d3 ;减法十位不为零则可继续减
jmp main ;减法十位为零则转到主程序
d3:dec r4
mov led2,#90h ;减法个位为零,减去1后变"9"
mov r0,#9 ;r0赋值"9",以便下一轮的个位减
mov a,r4
mov dptr,#tab
movc a,@a+dptr
mov led1,a ;减法十位程序
jnb key2,$ ;等待键放开
jmp k0 ;减完返回判断加减法键
;==============================================================
tab: db 0c0h,0f9h,0a4h,0b0h,99h
db 92h,82h,0f8h,80h,90h,0c0h ;0~9数型表
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -