实现每隔1秒计一个数,显示00到99

每隔1秒计一个数,显示00到99。
帮忙看一个汇编语言程序,要实现每隔1秒计一个数,显示00到99,可总显示00。
悬赏分:20 - 解决时间:2009-12-4 12:11
;===================================
最佳答案:改好了,你试试看。

    ORG  0000H
    AJMP START
    ORG  000BH
    AJMP T0_INT
START:
    MOV  SP, #60H
    MOV  TMOD, #01H
    MOV  TH0, #0B1H      ;B1E0H = 45536
    MOV  TL0, #0E0H
    MOV  IE, #82H
    SETB TR0
    MOV  R2, #50
    MOV  R3, #0
;-------------------
MAIN:
    LCALL DISPLAY
    SJMP  MAIN
;-----------------------------------
T0_INT:
    MOV   TH0, #0B1H     ;B1E0H = 45536
    MOV   TL0, #0E0H
    DJNZ  R2, EXIT_T0
    PUSH  ACC
    MOV   R2, #50
    MOV   A, R3
    ADD   A, #1
    DA    A
    MOV   R3, A          ;R3 = 00~99H
    POP   ACC
EXIT_T0:
    RETI
;-----------------------------------
DISPLAY:   
    MOV   A, R3
    ANL   A, #0FH        ;取出个位
    MOV   DPTR, #TAB
    MOVC  A, @A  +  DPTR
    MOV   P1,  #255
    MOV   P0, A          ;输出段码
    MOV   P1, #0FEH      ;P1.0=0
    LCALL  DELAY
;-------------------
    MOV   A, R3
    SWAP  A
    ANL   A, #0FH        ;取出十位
    MOVC  A, @A  +  DPTR
    MOV   P1,  #255
    MOV   P0, A          ;输出段码
    MOV   P1, #0FDH      ;P1.1=0
    LCALL  DELAY
    RET
;-----------------------------------
DELAY:
    MOV   R4, #250
    DJNZ  R4, $
    RET
;-----------------------------------
TAB:
    DB  0C0H, 0F9H, 0A4H, 0B0H, 099H, 092H, 082H, 0F8H
    DB  080H, 090H, 088H, 083H, 0C6H, 0A1H, 086H, 08EH
END
;===================================
回答者:   做而论道 - 十一级   2009-12-4 10:12
提问者对于答案的评价:太感谢了
原文网址:http://zhidao.baidu.com/question/127923810.html

用 PROTEUS 仿真,屏幕截图如下:


 

 

你可能感兴趣的:(计时类)