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

📄 timer.lst

📁 用单片机液晶显示1602实现时钟显示,并有时间设定功能
💻 LST
📖 第 1 页 / 共 3 页
字号:
8051 Assembler           Version 1.00   04/15/107 21:49:41    Page 1
G:\sheji2\1\timer.asm



    1 0000              
    2 0000              ;the definition of the port
    3 0000              SCLK    BIT    P1.0               ;DS1302的SCLK串行时钟与51的P1.0连接
    4 0000              IO      BIT    P1.1               ;IO数据输入输出与P1.1连接
    5 0000              RST     BIT    P1.2               ;RST复位与P1.2连接
    6 0000              RS      BIT    P2.0               ;the link of lcd&&mcu
    7 0000              RW      BIT    P2.1
    8 0000              E       BIT    P2.2 
    9 0000              ; the definition of  RAM  in 51
   10 0000              BITCNT        EQU   30H      ;数据位计数单元
   11 0000              BYTECNT       EQU   31H      ;数据字节计数单元
   12 0000              COMMAND       EQU   32H      ;命令字节单元
   13 0000              RECDATA       EQU   40H      ;接受数据缓冲区
   14 0000              SENDATA       EQU   50H      ;发送数据缓冲区 
   15 0000              DATE1         EQU   90H      ;显示缓冲区,存储要显示的十位数
   16 0000              DATE2         EQU   91H      ;显示缓冲区,存储要显示的个位数
   17 0000              DATE          EQU   92H      ;存放写入LCD的数据
   18 0000              DATE_N        EQU   93H      ;存放写入LCD的数据的个数
   19 0000              DATE3         EQU   94H      ;暂时存放LCD的命令字节
   20 0000              ;the main program of the design about time and stopwach
   21 0000                          ORG     0000H
   22 0000 0130                     AJMP    LCDMAIN
   23 000B                          ORG     000BH
   24 000B 0159                     AJMP    IT0P      ;转中断服务程序
   25 0030                          ORG     0030H
   26 0030 5165         LCDMAIN:    ACALL  LCDINT         ;initialization of the lcd016l
   27 0032 51C7         LOOP:       ACALL   Read_Sec      ;调用读出秒程序
   28 0034 75948A                   MOV   DATE3,#8AH      ;the 11th word of the first line in the lcd
   29 0037 513F                     ACALL   Display_Time  ;use of the program for displaying time
   30 0039 512C                     ACALL   Display_Spot  ;display":"
   31 003B 51D0                     ACALL   Read_Min      ;调用读出分程序
   32 003D 759487                   MOV   DATE3,#87H      ;the 8th word of the first line in the lcd
   33 0040 513F                     ACALL   Display_Time  ;jump to the program for displaying time
   34 0042 51D9                     ACALL   Read_Hour     ;调用读出小时程序
   35 0044 759484                   MOV   DATE3,#84H      ;the 5th word of the first line in the lcd
   36 0047 513F                     ACALL   Display_Time  
   37 0049 30B005                   JNB   P3.0,YU         ;当按下KEY1(P3.0=0)
   38 004C 30B206                   JNB   P3.2,WEI        ;当按下KEY3
   39 004F              
   40 004F 0132                     AJMP    LOOP
   41 0051 314C             YU:     ACALL   Adjust_Time ;调时程序     
   42 0053 0132                     AJMP    LOOP
   43 0055 3108            WEI:     ACALL   Stopwatch   ;秒表
   44 0057 0132                     AJMP    LOOP
   45 0059              
   46 0059 758AF0       IT0P:       MOV   TL0,#0F0H     ;中断服务程序
   47 005C 758CD8                   MOV   TH0,#0D8H 
   48 005F D2B1                     SETB  P3.1          
   49 0061 30B113                   JNB   P3.1,STOP     ;push the button key2           
   50 0064 B8630D                   CJNE R0,#99,NO_99
   51 0067 7800                     MOV  R0,#0
   52 0069 BA3B05                   CJNE R2,#59,NO_59
   53 006C 7A00                     MOV  R2,#0
   54 006E 0C                       INC  R4
   55 006F 0181                     AJMP  SHOW
   56 0071 0A               NO_59:  INC  R2
   57 0072 0181                     AJMP  SHOW 
8051 Assembler           Version 1.00   04/15/107 21:49:41    Page 2
G:\sheji2\1\timer.asm



   58 0074 08               NO_99:  INC  R0
   59 0075 0181                     AJMP  SHOW
   60 0077 00                STOP:  NOP
   61 0078 5196              KEY_2: ACALL DELAY
   62 007A D2B1                     SETB  P3.1
   63 007C 30B1F9                   JNB   P3.1,KEY_2
   64 007F C28C                     CLR   TR0
   65 0081 00                SHOW:  NOP
   66 0082 E8                       MOV  A,R0
   67 0083 75948A                   MOV  DATE3,#8AH
   68 0086 1197                     ACALL  Display_SW
   69 0088 11B8                     ACALL  Display_Spot_SW
   70 008A 759487                   MOV  DATE3,#87H
   71 008D EA                       MOV  A,R2
   72 008E 1197                     ACALL  Display_SW
   73 0090 EC                       MOV  A,R4
   74 0091 759484                   MOV  DATE3,#84H
   75 0094 1197                     ACALL  Display_SW
   76 0096 32                       RETI
   77 0097               
   78 0097 75F00A       Display_SW: MOV  B,#10
   79 009A 84                       DIV  AB
   80 009B F590                     MOV  DATE1,A
   81 009D 85F091                   MOV  DATE2,B
   82 00A0 439130                   ORL  DATE2,#30H
   83 00A3 439030                   ORL  DATE1,#30H
   84 00A6 AB94                     MOV  R3,DATE3
   85 00A8 11CB                     ACALL  WRLCD_SW
   86 00AA 859092                   MOV  DATE,DATE1
   87 00AD 11DF                     ACALL  WRDATE_SW
   88 00AF 0B                       INC  R3
   89 00B0 11CB                     ACALL  WRLCD_SW
   90 00B2 859192                   MOV  DATE,DATE2
   91 00B5 11DF                     ACALL  WRDATE_SW
   92 00B7 22                       RET
   93 00B8              
   94 00B8 7B89         Display_Spot_SW:  MOV  R3,#89H
   95 00BA 11CB                           ACALL   WRLCD_SW
   96 00BC 75923A                         MOV  DATE,#3AH
   97 00BF 11DF                           ACALL   WRDATE_SW
   98 00C1 7B86                           MOV  R3,#86H
   99 00C3 11CB                           ACALL   WRLCD_SW
  100 00C5 75923A                         MOV  DATE,#3AH
  101 00C8 11DF                           ACALL   WRDATE_SW
  102 00CA 22                             RET
  103 00CB                     
  104 00CB 11EF         WRLCD_SW:  ACALL    BUSY_SW
  105 00CD C0E0                    PUSH     ACC
  106 00CF EB                      MOV      A,R3
  107 00D0 C2A0                    CLR      RS
  108 00D2 C2A1                    CLR      RW
  109 00D4 F580                    MOV       P0,A
  110 00D6 C2A2                    CLR      E
  111 00D8 11FF                    ACALL    DELAY_SW
  112 00DA D2A2                    SETB   E
  113 00DC D0E0                    POP    ACC
  114 00DE 22                      RET
8051 Assembler           Version 1.00   04/15/107 21:49:41    Page 3
G:\sheji2\1\timer.asm



  115 00DF              
  116 00DF 11EF         WRDATE_SW: ACALL     BUSY_SW
  117 00E1 D2A0                    SETB   RS
  118 00E3 C2A1                    CLR    RW
  119 00E5 859280                  MOV   P0,DATE
  120 00E8 C2A2                    CLR    E
  121 00EA 11FF                    ACALL    DELAY_SW
  122 00EC D2A2                    SETB   E
  123 00EE 22                      RET
  124 00EF              
  125 00EF C2A0         BUSY_SW:   CLR   RS
  126 00F1 D2A1                    SETB  RW
  127 00F3 E580                    MOV  A,P0
  128 00F5 C2A2                    CLR   E
  129 00F7 11FF                    ACALL     DELAY_SW
  130 00F9 D2A2                    SETB  E
  131 00FB 20E7F1                  JB     ACC.7,BUSY_SW    ;F=1忙碌
  132 00FE 22                      RET 
  133 00FF              
  134 00FF 7E02         DELAY_SW:  MOV   R6,#2
  135 0101 7D19         D2:        MOV   R5,#25
  136 0103 DDFE                    DJNZ   R5,$
  137 0105 DEFA                    DJNZ   R6,D2
  138 0107 22                      RET               
  139 0108              
  140 0108              ;利用定时器T0的方式1,首先对其及中断系统进行初始化
  141 0108 00           Stopwatch:  NOP
  142 0109 5196              KEY3:  ACALL   DELAY
  143 010B D2B2                     SETB    P3.2
  144 010D 30B2F9                   JNB  P3.2,KEY3
  145 0110 759030                   MOV  DATE1,#30H
  146 0113 759130                   MOV  DATE2,#30H
  147 0116 75948A                   MOV  DATE3,#8AH
  148 0119 5153                     ACALL   Display_Time1
  149 011B 512C                     ACALL   Display_Spot
  150 011D 759487                   MOV  DATE3,#87H
  151 0120 5153                     ACALL   Display_Time1
  152 0122 759484                   MOV  DATE3,#84H
  153 0125 5153                     ACALL   Display_Time1            ;显示00:00:00           
  154 0127                          
  155 0127 7800                     MOV  R0,#0
  156 0129 7A00                     MOV  R2,#0
  157 012B 7C00                     MOV  R4,#0    
  158 012D 758901                   MOV  TMOD,#01H        ;设置定时器0的方式1
  159 0130 85F08A                   MOV  TL0,0F0H
  160 0133 85D88C                   MOV  TH0,0D8H         ;T0置初值,0.01s计数一次
  161 0136 D28C                     SETB    TR0           ;允许T0计数
  162 0138 D2AF                     SETB    EA            ;CPU开放中断
  163 013A D2A9                     SETB    ET0           ;允许T0中断
  164 013C D2B2              HERE:  SETB     P3.2         ;等待
  165 013E 20B2FB                   JB  P3.2,HERE         ;按下KEY3则跳出
  166 0141 C28C                     CLR     TR0           ;stop counting
  167 0143 5196             KEY33:  ACALL   DELAY
  168 0145 D2B2                     SETB    P3.2
  169 0147 30B2F9                   JNB  P3.2,KEY33
  170 014A 00                       NOP
  171 014B 22                       RET 
8051 Assembler           Version 1.00   04/15/107 21:49:41    Page 4
G:\sheji2\1\timer.asm



  172 014C              
  173 014C              ;调整时间程序
  174 014C               
  175 014C 51BB         Adjust_Time:      ACALL  Clock_Unable
  176 014E 5196                KEY1_Fi:   ACALL  DELAY            ;延时,防止抖动
  177 0150 D2B0                          SETB    P3.0
  178 0152 30B0F9                        JNB    P3.0, KEY1_Fi     ;键是否释放
  179 0155 759030              WAIT1:    MOV   DATE1,#30H
  180 0158 759130                        MOV   DATE2,#30H
  181 015B 75948A                        MOV   DATE3,#8AH
  182 015E 5153                          ACALL    Display_Time1
  183 0160 5196                          ACALL     DELAY
  184 0162 20B0F0                        JB    P3.0,WAIT1     ;P3.0=0则执行以下程序
  185 0165 5196                KEY1_S:   ACALL  DELAY
  186 0167 D2B0                          SETB   P3.0
  187 0169 30B0F9                        JNB  P3.0,KEY1_S     ;键是否释放
  188 016C 317D                          ACALL  Adjust_Min
  189 016E 51F8                          ACALL  Send_Enable
  190 0170 716B                          ACALL  Deal_M
  191 0172 51E2                          ACALL  Send_Min
  192 0174 31CF                          ACALL  Adjust_Hour
  193 0176 7178                          ACALL  Deal_H
  194 0178 51ED                          ACALL  Send_Hour
  195 017A 51AF                          ACALL  Clock_Enable
  196 017C 22                            RET
  197 017D              
  198 017D              Adjust_Min:          

⌨️ 快捷键说明

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