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

📄 timer.lst

📁 用单片机液晶显示1602实现时钟显示,并有时间设定功能
💻 LST
📖 第 1 页 / 共 3 页
字号:
  199 017D 759030             WAIT2:     MOV   DATE1,#30H
  200 0180 759130                        MOV   DATE2,#30H
  201 0183 759487                        MOV   DATE3,#87H
  202 0186 5153                          ACALL    Display_Time1
  203 0188 5196                          ACALL     DELAY
  204 018A 20B1F0                        JB    P3.1,WAIT2    ;P3.1=0则执行以下程序
  205 018D 5196                KEY2:     ACALL  DELAY
  206 018F D2B1                          SETB   P3.1
  207 0191 30B1F9                        JNB  P3.1,KEY2    ;键是否释放
  208 0194 E591         LOOP1:           MOV   A,DATE2
  209 0196 B43911                        CJNE  A,#39H,NO9
  210 0199 759130                        MOV   DATE2,#30H 
  211 019C E590                          MOV   A,DATE1
  212 019E B43505                        CJNE  A,#35H,NO5
  213 01A1 759030                        MOV   DATE1,#30H
  214 01A4 1590                          DEC   DATE1
  215 01A6 0590                NO5:      INC   DATE1
  216 01A8 1591                          DEC   DATE2
  217 01AA 0591                NO9:      INC   DATE2
  218 01AC 5196                          ACALL  DELAY
  219 01AE                     WAIT3:   
  220 01AE 759487                        MOV    DATE3,#87H
  221 01B1 5153                          ACALL    Display_Time1
  222 01B3 5196                          ACALL  DELAY
  223 01B5 30B00E                        JNB    P3.0,JUMP
  224 01B8 5196                          ACALL  DELAY
  225 01BA 20B1F1                        JB     P3.1,WAIT3    
  226 01BD 5196                KEY22:    ACALL  DELAY
  227 01BF D2B1                          SETB   P3.1
  228 01C1 30B1F9                        JNB    P3.1,KEY22
8051 Assembler           Version 1.00   04/15/107 21:49:41    Page 5
G:\sheji2\1\timer.asm



  229 01C4 2194                          AJMP   LOOP1
  230 01C6 00                  JUMP:     NOP
  231 01C7 5196                KEY1_T:   ACALL  DELAY
  232 01C9 D2B0                          SETB   P3.0
  233 01CB 30B0F9                        JNB    P3.0,KEY1_T
  234 01CE 22                            RET
  235 01CF              
  236 01CF              Adjust_Hour:     
  237 01CF 759030             WAIT4:     MOV   DATE1,#30H
  238 01D2 759130                        MOV   DATE2,#30H
  239 01D5 759484                        MOV   DATE3,#84H
  240 01D8 5153                          ACALL    Display_Time1
  241 01DA 5196                          ACALL     DELAY
  242 01DC 20B1F0                        JB    P3.1,WAIT4    ;P3.1=0则执行以下程序
  243 01DF 5196                KEY222:   ACALL  DELAY
  244 01E1 D2B1                          SETB   P3.1
  245 01E3 30B1F9                        JNB  P3.1,KEY222    ;键是否释放
  246 01E6              
  247 01E6 E590               LOOP2:     MOV   A,DATE1
  248 01E8 B43211                        CJNE  A,#32H,NO2   
  249 01EB E591                          MOV   A,DATE2
  250 01ED B43308                        CJNE  A,#33H,NO3
  251 01F0 759030                        MOV   DATE1,#30H
  252 01F3 759130                        MOV   DATE2,#30H
  253 01F6 1591                          DEC   DATE2
  254 01F8 0591                     NO3: INC   DATE2
  255 01FA 410A                          AJMP  Equal_2
  256 01FC              
  257 01FC E591                     NO2: MOV   A,DATE2
  258 01FE B43907                        CJNE  A,#39H,NO99
  259 0201 759130                        MOV   DATE2,#30H
  260 0204 0590                          INC   DATE1
  261 0206 1591                          DEC   DATE2
  262 0208 0591                    NO99: INC  DATE2
  263 020A                     Equal_2: 
  264 020A 5196                          ACALL  DELAY
  265 020C 759484               WAIT5:   MOV    DATE3,#84H
  266 020F 5153                          ACALL    Display_Time1
  267 0211 5196                          ACALL  DELAY
  268 0213 30B00E                        JNB    P3.0,JUMP1
  269 0216 5196                          ACALL  DELAY
  270 0218 20B1F1                        JB     P3.1,WAIT5   
  271 021B 5196                KEY2222:  ACALL  DELAY
  272 021D D2B1                          SETB   P3.1
  273 021F 30B1F9                        JNB    P3.1,KEY2222
  274 0222 21E6                          AJMP   LOOP2
  275 0224                     JUMP1:    
  276 0224 5196                KEY1_Fo:  ACALL  DELAY
  277 0226 D2B0                          SETB   P3.0
  278 0228 30B0F9                        JNB    P3.0,KEY1_Fo
  279 022B 22                            RET
  280 022C                              
  281 022C              
  282 022C              ;显示字符:程序
  283 022C 7B89         Display_Spot:    MOV  R3,#89H
  284 022E 5176                          ACALL   WRLCD
  285 0230 75923A                        MOV  DATE,#3AH
8051 Assembler           Version 1.00   04/15/107 21:49:41    Page 6
G:\sheji2\1\timer.asm



  286 0233 519F                          ACALL   WRDATE
  287 0235 7B86                          MOV  R3,#86H
  288 0237 5176                          ACALL   WRLCD
  289 0239 75923A                        MOV  DATE,#3AH
  290 023C 519F                          ACALL   WRDATE
  291 023E 22                            RET
  292 023F                         
  293 023F              ;显示秒分时程序
  294 023F 7159         Display_Time:      ACALL   Deal_SMH
  295 0241 AB94                            MOV R3,DATE3
  296 0243 5176                            ACALL   WRLCD
  297 0245 859092                          MOV  DATE,DATE1
  298 0248 519F                            ACALL  WRDATE
  299 024A 0B                              INC  R3
  300 024B 5176                            ACALL  WRLCD
  301 024D 859192                          MOV   DATE,DATE2
  302 0250 519F                            ACALL  WRDATE
  303 0252 22                              RET 
  304 0253              ;按下KEY后显示等待程序
  305 0253 AB94         Display_Time1:     MOV  R3,DATE3
  306 0255 5176                            ACALL   WRLCD
  307 0257 859092                          MOV  DATE,DATE1
  308 025A 519F                            ACALL   WRDATE
  309 025C 0B                              INC  R3
  310 025D 5176                            ACALL   WRLCD
  311 025F 859192                          MOV   DATE,DATE2
  312 0262 519F                            ACALL   WRDATE
  313 0264 22                              RET
  314 0265              
  315 0265                                   
  316 0265              ;the programme of the initialization of lcd016l(load the command code to R3)
  317 0265 7B01         LCDINT:   MOV  R3,#01H          ;清屏
  318 0267 5176                   ACALL     WRLCD     ;写入指令
  319 0269 7B3C                   MOV  R3,#3CH         ;功能设定:8位字符,2行,5X10点阵
  320 026B 5176                   ACALL     WRLCD
  321 026D 7B06                   MOV  R3,#06H         ;I/D=1,AC自动+1,S=0整体显示不移动
  322 026F 5176                   ACALL     WRLCD
  323 0271 7B0C                   MOV  R3,#0CH         ;D=1开显示,C=0关光标,B=0字符不闪耀
  324 0273 5176                   ACALL     WRLCD
  325 0275 22                     RET 
  326 0276              
  327 0276              ;写命令子程序,R3中存放要写入的命令
  328 0276 5186         WRLCD:    ACALL    BUSY
  329 0278 EB                     MOV     A,R3
  330 0279 C2A0                   CLR      RS
  331 027B C2A1                   CLR      RW
  332 027D F580                   MOV     P0,A
  333 027F C2A2                   CLR      E
  334 0281 5196                   ACALL    DELAY
  335 0283 D2A2                   SETB   E
  336 0285 22                     RET
  337 0286              
  338 0286              ;查询“忙碌”(BF)子程序
  339 0286 C2A0         BUSY:     CLR   RS
  340 0288 D2A1                   SETB  RW
  341 028A E580                   MOV  A,P0
  342 028C C2A2                   CLR   E
8051 Assembler           Version 1.00   04/15/107 21:49:41    Page 7
G:\sheji2\1\timer.asm



  343 028E 5196                   ACALL     DELAY
  344 0290 D2A2                   SETB  E
  345 0292 20E7F1                 JB     ACC.7,BUSY    ;F=1忙碌
  346 0295 22                     RET 
  347 0296              
  348 0296              ;延时子程序
  349 0296 7E05         DELAY:   MOV   R6,#5
  350 0298 7D19         D1:      MOV   R5,#25
  351 029A DDFE                  DJNZ   R5,$
  352 029C DEFA                  DJNZ   R6,D1
  353 029E 22                    RET 
  354 029F              
  355 029F              ;写一位字符数据子程序,DATE中存放要写入的数据
  356 029F 5186         WRDATE:    ACALL     BUSY
  357 02A1 D2A0                    SETB   RS         ;RS=1,RW=0,可以显示各字符
  358 02A3 C2A1                    CLR    RW
  359 02A5 859280                  MOV   P0,DATE
  360 02A8 C2A2                    CLR    E          ;读写使能(下降沿使能)
  361 02AA 5196                    ACALL    DELAY    ;让一个字节的数据顺利写入LCD
  362 02AC D2A2                    SETB   E
  363 02AE 22                      RET 
  364 02AF              ;时钟允许运行程序
  365 02AF 753280       Clock_Enable: MOV  COMMAND,#80H;命令字节为80H
  366 02B2 753101                     MOV  BYTECNT,#1    ;单字节传送模式   
  367 02B5 755000                     MOV  SENDATA,#00H;数据内容为0,振荡器工作允许,时钟运行开始
  368 02B8 7120                       ACALL   Send_Data   ;调用写入DS1302数据程序
  369 02BA 22                         RET
  370 02BB              ;时钟停止程序
  371 02BB 753280       Clock_Unable: MOV COMMAND,#80H
  372 02BE 753101                     MOV BYTECNT,#1
  373 02C1 755080                     MOV SENDATA,#80H
  374 02C4 7120                       ACALL   Send_Data
  375 02C6 22                         RET
  376 02C7              
  377 02C7              
  378 02C7              ;从DS1302的秒,分,时register 中读出数据程序(采用单字节模式)
  379 02C7 753281       Read_Sec:   MOV  COMMAND,#81H  ;命令字节为81H
  380 02CA 753101                   MOV  BYTECNT,#1     ;单字节读出模式
  381 02CD 713C                     ACALL    Rec_Data       ;调用读出DS1302数据程序
  382 02CF 22                       RET
  383 02D0 753283       Read_Min:   MOV  COMMAND,#83H
  384 02D3 753101                   MOV  BYTECNT,#1
  385 02D6 713C                     ACALL    Rec_Data
  386 02D8 22                       RET
  387 02D9 753285       Read_Hour:  MOV  COMMAND,#85H   
  388 02DC 753101                   MOV  BYTECNT,#1
  389 02DF 713C                     ACALL    Rec_Data
  390 02E1 22                       RET
  391 02E2                                
  392 02E2              ;将分,时数据写入DS1302相应register程序
  393 02E2 753282       Send_Min:   MOV  COMMAND,#82H
  394 02E5 753101                   MOV  BYTECNT,#1
  395 02E8 F550                     MOV  SENDATA,A
  396 02EA 7120                     ACALL    Send_Data
  397 02EC 22                       RET
  398 02ED 753284       Send_Hour:  MOV  COMMAND,#84H
  399 02F0 753101                   MOV  BYTECNT,#1
8051 Assembler           Version 1.00   04/15/107 21:49:41    Page 8
G:\sheji2\1\timer.asm

⌨️ 快捷键说明

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