×
单片机 > 单片机程序设计 > 详情

数码管动态显示 汇编 60进制

发布时间:2020-08-26 发布时间:
|

题目:用两个动态数码管从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            ;循环显示80遍,约用1.6s
;-------------------------------------------------------
        MOV  A,  R3              ;这是计数值
        ADD  A,  #1
        DA   A                   ;变成 BCD 码,即:00~99H
        CJNE A, #60H, SSS
        CLR  A
SSS:
        MOV  R3, A               ;计数值分解.
        MOV  B,  #16
        DIV  AB                  ;分成高、低四位
        MOV  R2, A               ;准备去显示
        MOV  R1, B
        SJMP M1                  ;转到前面,显示80遍
;-------------------------------------------------------
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~4
        DB  0x92,0x82,0xf8,0x80,0x90  ;共阳极段码 5~9
;-------------------------------------------------------
DLY:    MOV  R6, #20            ;10ms延时.
D1:     MOV  R7, #248
        DJNZ R7, $
        DJNZ R6, D1
        RET
;-------------------------------------------------------
上述程序运行的效果图如下:




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32CubeMX系列教程02_STM32CubeMX工具.HAL库下载.安装说明