动态数码管 汇编 60进制

用两个动态数码管从0显示到60,由89C51的P1口输出,不加译码器,直接连接数码管,注意是动态数码管,不是两个单独的静态数码管。

程序如下:

        ORG  0000H

        LJMP MAIN

        ORG  0100H

MAIN:

        MOV  DPTR,#TAB           ;表首址送DPTR

        MOV  R1, #0

        MOV  R2, #0              

M1:

        MOV  R0, #50

LOOP:

        CALL DIS

        DJNZ R0, LOOP

        MOV  A,  R3

        ADD  A,  #1

        DA   A

        CJNE A, #60H, SSS

        CLR  A

SSS:

        MOV  R3, A               ;计数值.

        MOV  B,  #16

        DIV  AB

        MOV  R2, A

        MOV  R1, B

        SJMP M1

;-------------------------------------------------------

DIS:                             ;显示程序.

        MOV  A,  R2              ;显示十位.

        MOVC A,  @A+DPTR

        CLR  P2.1

        MOV  P1, A

        SETB P2.0                ;十位的位选.

        CALL DLY

        MOV  A,  R1              ;个位显示.

        MOVC A,  @A+DPTR

        CLR  P2.0                ;关闭十位的显示.

        MOV  P1, A

        SETB P2.1                ;个位的位选.

        CALL DLY

        RET

;-------------------------------------------------------

TAB:    DB  0xc0,0xf9,0xa4,0xb0,0x99  ;共阳极0~9

        DB  0x92,0x82,0xf8,0x80,0x90

DLY:    MOV  R6, #14H            ;10ms延时.

D1:     MOV  R7, #0F8H

        DJNZ R7, $

        DJNZ R6, D1

        RET

;-------------------------------------------------------

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网