SETB ET1 ;定时器1允许中断
SETB TR1 ;开定时1
MOV P2,#0FEH ;设置位控
MOV 30H,#12H ;显示初始值
MOV 31H,#23H
MOV TH0,#3CH ;设置初始值
MOV TL0,#0B0H
SETB ET0 ;定时器0中断允许
SETB TR0 ;开定时0
MOV R0,#0AH ;设置循环次数
MOV R1,#14H
MOV R2,#05H
MOV DPTR,#TAB;定义字型码
MAIN1:JB P3.6,MAIN2 ;判加键是否按下
ACALL LOOP
JB P3.6,MAIN2 ;判是否抖动
ACALL LOOP
JB P3.6,MAIN2 ;再判加键是否按下
ACALL LOOP
L1:JNB P3.6,L1 ;判键是否松开
MOV A,30H
CLR C
INC A ;显示数加1
DA A
MOV 30H,A ;显示数字
MAIN2:JB P3.7,MAIN1;判减键是否按下
ACALL LOOP
JB P3.7,MAIN1 ;判是否抖动
ACALL LOOP
JB P3.7,MAIN1
ACALL LOOP
L2:JNB P3.7,L2 ;判减键是否送开
MOV A,30H
ANL A,#0FH ;屏蔽十位
JZ L3
MOV A,30H
MOV 30H,A
CLR C
DEC A ;显示数减1
MOV 30H,A ;送显示
AJMP MAIN1
L3:MOV A,30H
ANL A,#0F0H ;屏蔽个位
JZ L6
MOV A,30H
ORL A, #09H ;个位送9
SUBB A,#10H ;十位减1
MOV 30H,A
AJMP MAIN1
L6: MOV 30H,#99H ;30H单元赋99
AJMP MAIN1
LT5:MOV TH1,#0ECH ;重新设置初值
MOV TL1,#78H
JB P2.0,LT1 ;判是否显示个位
MOV A,30H
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A ;段显
AJMP LT6
LT1:JB P2.1,LT2 ;判是否显示十位
MOV A,30H