给你个绝对能用的
START: MOV R0, #0
MOV DPTR,#TABLE
LOOP: ACALL DISPLAY
INC R0 ;计时器加1
CJNE R0, #250,LOOP
JMP START
;-----------------------------------------
DISPLAY:MOV A, R0 ;
MOV B, #10
DIV AB
MOV R1, A
MOV R2, B
;--------
MOV A, R1 ;
MOV B, #10 ;换成十进制
DIV AB ;a/b的商存入A,余数存入B
MOV R1, A ;R1暂时
MOV R4, B ;R2放十位
;---------
MOV A, R1 ;
MOV B, #10
DIV AB ;a/b的商存入A,余数存入B
MOV R1, A
MOV R5, B
MOV R3, #60 ;导通频率为50
;------个位数显示-----------------------------------
LOOP1:MOV A,R2
ACALL CHANG
CLR P2.0 ;开个位显示
ACALL DLY10MS ;延时
SETB P2.0 ;关个位显示
;-------十位显示---------------------------------
MOV A,R4
ACALL CHANG
CLR P2.1
ACALL DLY10MS
SETB P2.1
;-------百位显示-----------------------------------
MOV A,R5
ACALL CHANG
CLR P2.2
ACALL DLY10MS
SETB P2.2
DJNZ R3, LOOP1 ;计数器减1不为0转移到LOOP
RET
;取表显示子程序------------------------
CHANG: MOVC A,@A+DPTR ;
MOV P0, A ;
RET
;--------------------------
;延时程序
;--------------------------
DLY10MS: MOV R6, #10
D1: MOV R7, #250
DJNZ R7, $
DJNZ R6, D1
RET
;-------------------------------
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;------------------------------
END |