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

📄 timer.asm

📁 大学C51单片机实验源码 6 LED 电子时钟
💻 ASM
字号:
       HOUR    EQU   40H
       MINUTE  EQU   41H
       SECOND  EQU   42H
       FLASH   BIT   00H
       BDPLY   BIT   01H
       ORG   0000H
       LJMP  MAIN
       ORG   000BH
       LJMP  TIMER0
;============================================
       ORG   0100H
MAIN:  MOV   SP,   #100
       ;-------------------------------------------
       MOV   R0,   #30H     ;初始化显示存储区首地址
       MOV   R2,   #01H     ;初始化LED位选变量
       ;-------------------------------------------
       MOV   TMOD,  #01H
       MOV   TL0,   #60H
       MOV   TH0,   #0F0H
       SETB  EA
       SETB  ET0
       SETB  TR0
       ;-------------------------------------------
       MOV   R3,     #250
       MOV   HOUR,   #18
       MOV   MINUTE, #35
       MOV   SECOND,   #35
;--------------------------------------------
LOOP:  LCALL DELAY
       LCALL Transform
       LCALL Display           ;调用LED扫描程序
       LJMP  LOOP
;============================================
   ;T0 中断服务程序
TIMER0: MOV   TL0,   #62H
       MOV   TH0,   #0F0H
       ;-------------------------------------------
       DJNZ  R3,    TEND
       MOV   R3,    #250
       ;-------------------------------------------
       CPL   FLASH
       INC   SECOND               ;秒+1,并判断
       MOV   R4,   SECOND
       CJNE  R4,   #60,  TEND
       MOV   SECOND, #0
       ;-------------------------------------------
       INC   MINUTE
       MOV   R4,   MINUTE
       CJNE  R4,   #60,  TEND
       MOV   MINUTE, #0
       ;-------------------------------------------
       INC   HOUR
       MOV   R4,   HOUR
       CJNE  R4,   #24, TEND
       MOV   HOUR, #0
       ;-------------------------------------------
TEND:  RETI
;====================================================
;====================================================
Transform:
       MOV   A,   SECOND
       MOV   B,   #10
       DIV   AB
       MOV   30H, B
       MOV   31H, A
       ;-------------------------------------------
       MOV   A,   MINUTE
       MOV   B,   #10
       DIV   AB
       MOV   32H, B
       MOV   33H, A
       ;-------------------------------------------
       MOV   A,   HOUR
       MOV   B,   #10
       DIV   AB
       MOV   34H, B
       MOV   35H, A
       RET
;============================================
;************ 动态扫描显示程序 **************
; P0   LED段码接口
; P1   LED位选接口
; R2   记录当前要显示的LED位置
; R0   指向显示存储区(即存储要显示的数的地址)
;============================================
Display:
        MOV   A,    @R0
        MOV   DPTR, #GTAB
        MOVC  A,    @A+DPTR
        ;-------------------------------------------
        MOV   P1,   #0
        JNB   FLASH,   L1
        CJNE  R2,   #00000100B,  L0
        ORL   A,    #80H
L0:     CJNE  R2,   #00010000B,  L1
        ORL   A,    #80H
L1:     MOV   P0,   A
        MOV   P1,   R2
        ;-------------------------------------------
        INC   R0
        MOV   A,    R2
        RL    A
        MOV   R2,   A
        CJNE  A,    #40H,  RETURN
        MOV   R2,   #01H
        MOV   R0,   #30H
RETURN: RET
;==========================================
DELAY:  MOV   R6,  #5
LD1:    MOV   R7,  #50
        DJNZ  R7,  $
        DJNZ  R6,  LD1
        RET
;LED段码表
GTAB:  DB 3FH,06H,5BH,4FH,66H,6DH      ;0,1,2,3,4,5
       DB 7DH,07H,7FH,6FH,77H,7CH      ;6,7,8,9,A,B
       DB 58H,5EH,7BH,71H,00H,40H      ;C,D,E,F, ,-
;==========================================
       END

⌨️ 快捷键说明

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