⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 灯光控制。2.asm

📁 电子时钟实例,但是还不够完美
💻 ASM
字号:
;选择定时器T0,方式一,定时一秒,50MS中断一次
;PA口送位码,PB口送段码

        SEC1     EQU   30H       ;灯数个位存储器(个位)
        SEC10    EQU   31H       ;灯数十位存储器(十位)
        SEC100   EQU   32H       ;灯数百位存储器(百位)
        SEC      EQU   33H       ;灯数计数器
        ORG      0000H
        LJMP     START
        ORG      000BH
        LJMP     INT_T0
        ORG      0100H

START:
        MOV      SP,#60H            ;调整指针
        MOV      P1,#00H            ;开始灯全灭
        MOV      R3,P1
        MOV      R2,#20

        MOV      SEC,#00H           ;初始化为000
        MOV      SEC1,#00H
        MOV      SEC10,#00H
        MOV      SEC100,#00H

        MOV      DPTR,#7F00H        ;赋初值选中命令状态寄存器
        MOV      A,#03H
        MOVX     @DPTR,A            ;定义PA,PB口为输出口

        MOV      DPTR,#7F02H
        MOV      A,#00H
        MOVX     @DPTR,A            ;关闭显示

        MOV      TMOD,#01H           ;选择方式一开中断
        MOV      TH0,#3CH
        MOV      TL0,#0B0H
        SETB     EA
        SETB     TR0
        SETB     ET0

MAIN:
        MOV      A,SEC               ;把灯值数分为个位,十位,百位
        MOV      B,#100
        DIV      AB
        MOV      SEC100,A
        MOV      A,B
        MOV      B,#10
        DIV      AB
        MOV      SEC10,A
        MOV      SEC1,B

        ACALL    DISPLAY
        AJMP     MAIN

DISPLAY:                               ;显示子程序
        MOV      R4,#00000001B
        MOV      R0,#SEC1

DISP1:
        MOV      A,R4
        MOV      DPTR,#7F02H           ;送位码
        MOVX     @DPTR,A

        MOV      A,@R0                 ;送段码
        MOV      DPTR,#TABLE
        MOVC     A,@A+DPTR
        MOV      DPTR,#7F01H
        MOVX     @DPTR,A

        ACALL    DELAY
        MOV      A,R4
        JB       ACC.2,EXIT2           ;判断三个数码管是否都显示了
        RL       A
        MOV      R4,A
        INC      R0
        SJMP     DISP1
EXIT2:
        RET

INT_T0:                               ;中断程序
        PUSH     ACC
        PUSH     PSW
        MOV      TH0,#3CH             ;重装定时
        MOV      TL0,#0B0H
        DJNZ     R2,EXIT1             ;判断是否到了一秒
        INC      SEC
        INC      R3
        MOV      P1,R3
        MOV      R2,#20
        CJNE     R3,#0FFH,EXIT1        ;灯是否全亮,全这则重新计数
        MOV      SEC,#00H
        MOV      R3,#00H
        MOV      P1,R3
EXIT1:
        POP      PSW
        POP      ACC
        RETI

 DELAY:                               ;2毫秒的廷时子程序
        MOV      R7,#10
DELAY1:
        MOV      R6,#100
        DJNZ     R6,$
        DJNZ     R7,DELAY1
        RET

TABLE:  DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;位码0-9 共阳极
;TABLE:  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH   ;位码0-9 共阴极
;接线:8155      8031
;      12-19-----A0-A7
;      21-28-----a-h
;      29-34-----Y0-Y7
;          4-----RET
;          7-----A14
;          8-----A15
;          9-----RD
;         10-----WR
;         11-----ALE
;         20-----GND
;         40-----5V
;       P1口-----数码显示管

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -