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

📄 timer.lst

📁 用单片机液晶显示1602实现时钟显示,并有时间设定功能
💻 LST
📖 第 1 页 / 共 3 页
字号:



  400 02F3 F550                     MOV  SENDATA,A
  401 02F5 7120                     ACALL    Send_Data
  402 02F7 22                       RET
  403 02F8 75328E       Send_Enable:MOV  COMMAND,#8EH
  404 02FB 753101                   MOV  BYTECNT,#1
  405 02FE 755000                   MOV  SENDATA,#00H
  406 0301 7120                     ACALL    Send_Data
  407 0303 22                       RET
  408 0304              
  409 0304              ;发送命令字节Send_Cmd程序
  410 0304              ;描述:命令字节即DS1302的控制字,要与DS1302通信,首先要发送命令字节(具体作用
  411 0304              ;见说明书)
  412 0304 C292         Send_Cmd:       CLR       RST     ;复位pin为低电平所有数据传送终止
  413 0306 00                           NOP               ;空操作
  414 0307 C290                         CLR       SCLK   ;使串行时钟信号为低电平
  415 0309 00                           NOP
  416 030A D292                         SETB      RST    ;在读写数据期间RST只能为高
  417 030C 00                           NOP
  418 030D E532                         MOV   A ,COMMAND;将命令字节中的内容送到累加器A
  419 030F 753008                       MOV   BITCNT,#8    ;    BITCNT此时为8位
  420 0312                              Sent_Bit:
  421 0312 13                           RRC    A        ;累加器A的内容和进位标志Cy一起向右环移一位,
  422 0313                                              ;A.0进入Cy,Cy进入A.7
  423 0313 9291                         MOV   IO,C     ;将Cy位中的内容经IO端口送到DS1302中
  424 0315 00                           NOP
  425 0316 D290                         SETB   SCLK    ;SCLK时钟的上沿时数据被写入DS1302
  426 0318 00                           NOP
  427 0319 C290                         CLR    SCLK
  428 031B D530F4                       DJNZ   BITCNT, Sent_Bit  ;BITCNT减1不为0则转移到Sent_Cmd
  429 031E 00                           NOP
  430 031F 22                           RET              ;返回主程序
  431 0320              
  432 0320              ;发送数据程序Sent_Data
  433 0320              ;描述:将BYETCNT个字节发送到DS1302中,要发送的数据存放在SENDAT开始的发送
  434 0320              ;数据缓冲区中(从P1.1发送到IO),此程序由Sent_Cmd和Sent_Byte两部分组成
  435 0320 7104         Send_Data:      ACALL   Send_Cmd ;发送命令字节
  436 0322                             ;下面开始写入字节数据
  437 0322                             Sent_Byte0:
  438 0322 7850                        MOV   R0,#SENDATA;将SENTDATA的地址传给R0
  439 0324 E6                          MOV   A,@R0     ;将发送数据缓冲区的第一个字节送给A 寄存器间接
  440 0325                                             ;寻址
  441 0325 753008                      MOV   BITCNT,#8  ;令数据位计数器为8位 
  442 0328                             Sent_Byte1:
  443 0328 13                          RRC    A          ;以下7行程序和传送命令是一个道理
  444 0329 9291                        MOV   IO,C
  445 032B 00                          NOP
  446 032C D290                        SETB   SCLK
  447 032E 00                          NOP
  448 032F C290                        CLR    SCLK
  449 0331 D530F4                      DJNZ   BITCNT,Sent_Byte1;完成一个字节的传送
  450 0334 08                          INC    R0               ;R0中的内容自加1即使地址字节加1来到下
  451 0335                                                     ;个要传送的缓冲区单元
  452 0335 D531EA                      DJNZ   BYTECNT,Sent_Byte0;查看所需传送的字节是否已传完如没有则
  453 0338                                                      ;继续传送此为一循环程序
  454 0338 00                          NOP
  455 0339 C292                        CLR    RST                ;复位信号为低所有读写数据停止
  456 033B 22                          RET 
8051 Assembler           Version 1.00   04/15/107 21:49:41    Page 9
G:\sheji2\1\timer.asm



  457 033C              
  458 033C              ;接受数据Rec_Data程序
  459 033C              ;描述:从DS1302中读出数据(IO到P1.1),此程序由发送命令字节程序和读出数据程序两部
  460 033C              ;分组成,发送的数据字节存放在RECDATA开始的接受数据缓冲区单元中
  461 033C 7104         Rec_Data:     ACALL  Send_Cmd    ;传送命令字节
  462 033E                             ;下面开始接受数据
  463 033E                            Rec_Data0:
  464 033E E4                         CLR     A            ;清累加器
  465 033F C3                         CLR     C            ;清Cy
  466 0340 753008                     MOV    BITCNT,#8
  467 0343                            Rec_Data1:
  468 0343 A291                       MOV    C,IO          将IO口的数据位传送到Cy
  469 0345 D290                       SETB    SCLK         
  470 0347 00                         NOP
  471 0348 C290                       CLR     SCLK         ;SCLK时钟下沿将IO的数据位传送到Cy
  472 034A 13                         RRC     A
  473 034B D530F5                     DJNZ    BITCNT,Rec_Data1;查看一个字节是否传完
  474 034E 7940                       MOV    R1,#RECDATA   ;将接受数据缓冲区的开始地址传给R1
  475 0350 F7                         MOV    @R1,A          ;将A的内容传给缓冲区单元
  476 0351 09                         INC     R1              ;缓冲区单元地址自加1
  477 0352 D531E9                     DJNZ    BYTECNT,Rec_Data0;查看读入字节数是否符合要求
  478 0355 00                         NOP
  479 0356 C292                       CLR     RST              ;所有数据读写终止
  480 0358 22                         RET                       ;返回主程序 
  481 0359              
  482 0359              
  483 0359              ;对在接受数据缓冲区中的秒数据单元分成高四位和低四位分别放在两个显示缓冲单元中的低四位中
  484 0359 E4           Deal_SMH:         CLR     A            ;令累加器A的各位为0
  485 035A 7940                           MOV  R1,#RECDATA   ;将接受数据缓冲区的首地址传送给R1
  486 035C D7                             XCHD  A,@R1  ;累加器A的低4位与R1中地址所存储数据的低四
  487 035D                                              ;位交换
  488 035D F591                           MOV  DATE2,A    ;在低四位存放秒的个位
  489 035F E4                             CLR     A 
  490 0360 E7                             MOV  A,@R1
  491 0361 C4                             SWAP   A
  492 0362 F590                           MOV  DATE1,A    ;在低四位存放秒的十位
  493 0364 439130                         ORL  DATE2,#30H
  494 0367 439030                         ORL  DATE1,#30H
  495 036A 22                             RET
  496 036B              
  497 036B 53900F       Deal_M:           ANL  DATE1,#0FH
  498 036E 53910F                         ANL  DATE2,#0FH
  499 0371 E4                             CLR  A
  500 0372 E590                           MOV  A,DATE1
  501 0374 C4                             SWAP A
  502 0375 4591                           ORL  A,DATE2
  503 0377 22                             RET
  504 0378              
  505 0378 53900F       Deal_H:           ANL  DATE1,#0FH
  506 037B 53910F                         ANL  DATE2,#0FH
  507 037E E4                             CLR  A 
  508 037F E590                           MOV  A,DATE1
  509 0381 C4                             SWAP A
  510 0382 4591                           ORL  A,DATE2
  511 0384 22                             RET
  512 0385              END

Defined Symbols:
  BITCNT                                    000030  48
  BYTECNT                                   000031  49
  COMMAND                                   000032  50
  DATE                                      000092  146
  DATE1                                     000090  144
  DATE2                                     000091  145
  DATE3                                     000094  148
  DATE_N                                    000093  147
  E                                         0000A2  162
  IO                                        000091  145
  RECDATA                                   000040  64
  RS                                        0000A0  160
  RST                                       000092  146
  RW                                        0000A1  161
  SCLK                                      000090  144
  SENDATA                                   000050  80

Defined Labels:
  ADJUST_HOUR                               0001CF  463
  ADJUST_MIN                                00017D  381
  ADJUST_TIME                               00014C  332
  BUSY                                      000286  646
  BUSY_SW                                   0000EF  239
  CLOCK_ENABLE                              0002AF  687
  CLOCK_UNABLE                              0002BB  699
  D1                                        000298  664
  D2                                        000101  257
  DEAL_H                                    000378  888
  DEAL_M                                    00036B  875
  DEAL_SMH                                  000359  857
  DELAY                                     000296  662
  DELAY_SW                                  0000FF  255
  DISPLAY_SPOT                              00022C  556
  DISPLAY_SPOT_SW                           0000B8  184
  DISPLAY_SW                                000097  151
  DISPLAY_TIME                              00023F  575
  DISPLAY_TIME1                             000253  595
  EQUAL_2                                   00020A  522
  HERE                                      00013C  316
  IT0P                                      000059  89
  JUMP                                      0001C6  454
  JUMP1                                     000224  548
  KEY1_FI                                   00014E  334
  KEY1_FO                                   000224  548
  KEY1_S                                    000165  357
  KEY1_T                                    0001C7  455
  KEY2                                      00018D  397
  KEY22                                     0001BD  445
  KEY222                                    0001DF  479
  KEY2222                                   00021B  539
  KEY3                                      000109  265
  KEY33                                     000143  323
  KEY_2                                     000078  120
  LCDINT                                    000265  613
  LCDMAIN                                   000030  48
  LOOP                                      000032  50
  LOOP1                                     000194  404
  LOOP2                                     0001E6  486
  NO2                                       0001FC  508
  NO3                                       0001F8  504
  NO5                                       0001A6  422
  NO9                                       0001AA  426
  NO99                                      000208  520
  NO_59                                     000071  113
  NO_99                                     000074  116
  READ_HOUR                                 0002D9  729
  READ_MIN                                  0002D0  720
  READ_SEC                                  0002C7  711
  REC_DATA                                  00033C  828
  REC_DATA0                                 00033E  830
  REC_DATA1                                 000343  835
  SEND_CMD                                  000304  772
  SEND_DATA                                 000320  800
  SEND_ENABLE                               0002F8  760
  SEND_HOUR                                 0002ED  749
  SEND_MIN                                  0002E2  738
  SENT_BIT                                  000312  786
  SENT_BYTE0                                000322  802
  SENT_BYTE1                                000328  808
  SHOW                                      000081  129
  STOP                                      000077  119
  STOPWATCH                                 000108  264
  WAIT1                                     000155  341
  WAIT2                                     00017D  381
  WAIT3                                     0001AE  430
  WAIT4                                     0001CF  463
  WAIT5                                     00020C  524
  WEI                                       000055  85
  WRDATE                                    00029F  671
  WRDATE_SW                                 0000DF  223
  WRLCD                                     000276  630
  WRLCD_SW                                  0000CB  203
  YU                                        000051  81

⌨️ 快捷键说明

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