ORG 0000H
JMP BEGIN
ORG 0030H
TABLE: ; 共阴极数码管显示代码表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
;---------------------------------------
BEGIN: MOV P0,#0 ;数码管初始化,不显示
MOV P1,#0 ;数码管初始化,不显示
MOV 30H,#0 ;数据初始化为0
LOOP:
JB P3.2,LOOP1 ;加1键如果未按下转LOOP1
JNB P3.2,$ ;键被按下,等待键抬起
INC 30H ;数据加1
LCALL DIS ;显示
SJMP LOOP ;会循环起点
LOOP1:
JB P3.6,LOOP ;清零键如果未按转循环起点
JNB P3.6,$ ;键被按下等待按键抬起
MOV 30H,#0 ;数据清零
LCALL DIS ;显示
SJMP LOOP ;会循环起点
DIS:
MOV A,30H ;数据送A
CJNE A,#100,DIS1
CLR A
MOV 30H,A
DIS1:
MOV B,#10 ;除数送B
DIV AB ;除法运算
MOV 32H,A ;十位数送32H
MOV 33H,B ;个位数送33H
MOV DPTR,#TABLE;段码首地址送数据指针
MOV A,33H ;个位数送A
MOVC A,@A+DPTR ;查表
MOV P1,A ;结果送P1
MOV A,32H ;十位数送A
MOVC A,@A+DPTR ;查表
MOV P0,A ;结果送P0
RET ;子程序返回
END ;程序结束