控制工程师论坛

教程与手册

MAX7219驱动的可调电子时钟

xilinxue
xilinxue

2008-09-18

;;;;;;;;;;;            可调电子时钟            ;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;           (AT89C2051)            ;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;           2006年11月26日           ;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DIN       BIT    P3.0  ;定义变量
CLK       BIT    P3.1
LOAD      BIT    P3.7
fen0      EQU    30H   ;分个位内存地址
fen1      EQU    31H   ;分十位内存地址
SHI0      EQU    32H   ;小时个位内存地址
SHI1      EQU    33H   ;小时十位内存地址
XING      EQU    34H   ;星期内存地址
MIAO00    EQU    35H   ;1/10秒个位内存地址
MIAO0     EQU    36H   ;秒个位内存地址
MIAO1     EQU    37H   ;秒十位内存地址
          ORG    0000H
          AJMP   MAIN
          ORG    0003H              ;外中断0中断入口地址
          RETI                      ;中断返回(不开中断)
          ORG    000BH              ;定时/计数器0中断入口
          AJMP   INTA               ;转定时/计数器0服务程序
          ORG    0013H              ;外中断1中断入口地址
          RETI                      ;中断返回(不开中断)
          ORG    001BH              ;定时/计数器1中断入口
          AJMP   INTB               ;转定时/计数器1服务程序
          ORG    0023H              ;串行口中断入口地址
          RETI                      ;中断返回(不开中断)
   ORG    0035H
; 初始化程序
MAIN:     MOV    SP,#5FH
   MOV    A,#00H
          MOV    R0,#20H
CUNHUAN:  MOV    @R0,A             ;从20H-5EH清零
          INC    R0
          CJNE   R0,#5EH,CUNHUAN 
          MOV    TMOD,#11H         ;设置T0.T1工作方式1。定时
          MOV    TL1,#0B0H         ;置T1计数初值
          MOV    TH1,#3CH          ;
          MOV    TL0,#0B0H         ;置T0计数初值
          MOV    TH0,#3CH          ;
          ACALL  PROCECC           ;设置MAX7219初始值
          MOV    43H,#0            ;设置显示初值10:30,星期1
   MOV    44H,#3
   MOV    4AH,#0
   MOV    46H,#1
   MOV    47H,#1
   MOV    40H,#0
   MOV    41H,#0
   MOV    42H,#0
;闹钟设定时间为6:20 
          MOV    50H,#0
          MOV    51H,#2
          MOV    52H,#6
          MOV    53H,#0
          MOV    IE,#8AH
          MOV    IP,#08H          ;置T1为高级中断
          MOV    TCON,#50H        ;启动T0,T1开始计数
;主程序
START:    MOV    A,4BH            ;秒个位内存地址送A
          MOV    B,#2     ;2送B
          DIV    AB      ;4BH的内容除以2
   MOV    A,B     ;B送A
   JZ     M1               ;根据A中是1或0决定小数点是否闪烁
   MOV    30H,43H
          MOV    31H,44H
   MOV    A,#80H
          ORL    A,4AH            ;加上小数点
   MOV    32H,A
   MOV    33H,46H
   MOV    34H,47H
   MOV    35H,#0fh
   MOV    36H,4BH
   MOV    37H,42H
   AJMP   M2
M1:       MOV    30H,43H
          MOV    31H,44H
          MOV    32H,4AH
   MOV    33H,46H
   MOV    34H,47H
   MOV    35H,#0fh
   MOV    A,#80H
          ORL    A,4BH            ;加上小数点
   MOV    36H,A
   MOV    37H,42H
M2:       ACALL  C2               ;调用打开显示子程序C2
          ACALL  DISPLAY          ;显示
   MOV    A,28H            ;判断28H标志位是否等于0
   CJNE   A,#00H,A1        ;若等于零,则关T0
   CLR    TR0
;自动亮度调节
A1:       MOV    A,46H
          CJNE   A,#01H,B2
          MOV    A,4AH
          CJNE   A,#06H,B2
          MOV    A,44H
          JNZ    B2
          MOV    A,#0AH            ;亮度寄存器
          MOV    B,#00H
          ACALL  W_7219            ;调节亮度
B2:       MOV    A,46H
          JNZ    A2
          MOV    A,4AH
          CJNE   A,#08H,A2
          MOV    A,44H
          JNZ    A2
          MOV    A,#0AH            ;亮度寄存器
          MOV    B,#03H
          ACALL  W_7219            ;调节亮度
;判断调时调闹键是否被按下,若按下则置28H为1,并开T0,并调用相应的程序段
A2:       JB     P1.0,A3
          ACALL  DEL
          JB     P1.0,A2
   MOV    28H,#01H          ;调整标志位28H入1
   SETB   TR0
          ACALL  TIAOSHI
A3:       JB     P1.5,A4
          ACALL  DEL
          JB     P1.5,A3
   MOV    28H,#01H          ;调整标志位28H入1
   SETB   TR0
          ACALL  TIAONAO
;判断P1。1口是否被按下,若是则轮流显示闹钟时间和当前时间
A4:       JB     P1.1,G1
          ACALL  DEL
   JB     P1.1,A4
C3:       ACALL  C2                ;调用打开显示子程序C2
     MOV    30H,50H
          MOV    31H,51H
   MOV    A,#80H
   ORL    A,52H
   MOV    32H,A
   MOV    33H,53H
          ACALL  DISPLAY           ;显示
   CALL   DELL1
          MOV    30H,43H
          MOV    31H,44H
   MOV    32H,4AH
   MOV    33H,46H
   MOV    34H,47H
   MOV    35H,40H
   MOV    36H,4BH
   MOV    37H,42H
          ACALL  DISPLAY         ;显示
   CALL   DELL1
   JNB    P1.1,C3
          ACALL  C1              ;调用关灭显示子程序C1
回帖

评论3

总共 , 当前 /
首页 | 登录 | 注册 | 返回顶部↑
手机版 | 电脑版
版权所有 Copyright(C) 2016 CE China