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

📄 lcd12887_1.lst

📁 数字时钟芯片DS12CR887的驱动与LCD1602液晶显示~采用8位数据总线的方式进行读写~
💻 LST
📖 第 1 页 / 共 5 页
字号:
  10          unsigned char Set;      //调整值
  11          
  12          
  13          /*--------------------------------------------------------------*/
  14          //延时200ms 函数定义
  15          void delay200ms(void)
  16          {
  17   1              unsigned char i,j,k;
  18   1              for(i=201;i>0;i--)
  19   1              for(j=32;j>0;j--)
  20   1              for(k=14;k>0;k--);
  21   1      }
  22          
  23          
  24          /*--------------------------------------------------------------*/
  25          //延时5000+0us 函数定义
  26          void delay5ms(void)
  27          {
C51 COMPILER V7.06   LCD12887_1                                                            10/26/2008 21:45:08 PAGE 10  

  28   1          unsigned char i,j;
  29   1          for(i=185;i>0;i--)
  30   1          for(j=12;j>0;j--);
  31   1      }
  32          
  33          
  34          /*--------------------------------------------------------------*/
  35          //键盘扫描
  36          void Keysan(void)                               //P0_0切换键,P0_1数值加,P0_1数值减
  37          {
  38   1              if(P0_0 == 0)
  39   1              {
  40   2                      delay5ms();
  41   2                      if(P0_0 == 0)   k++;
  42   2                      if(k == 7)              k = 0;
  43   2              }
  44   1              if(P0_1 == 0)   {delay5ms();    if(P0_1 == 0)   Set++;}
  45   1              if(P0_2 == 0)   {delay5ms();    if(P0_2 == 0)   Set--;}
  46   1              switch(k)
  47   1              {
  48   2                              case 0: DS12887_SetTime(DS12887_Second, Set); if(Set > 59 || Set < 0)  Set = 0;  break;
  49   2                              case 1: DS12887_SetTime(DS12887_Minute, Set); if(Set > 59 || Set < 0)  Set = 0;  break;
  50   2                              case 2: DS12887_SetTime(DS12887_Hour  , Set); if(Set > 24 || Set < 0)  Set = 0;  break;
  51   2                              case 3: DS12887_SetTime(DS12887_Day   , Set); if(Set > 31 || Set < 0)  Set = 0;  break;
  52   2                              case 4: DS12887_SetTime(DS12887_Month , Set); if(Set > 12 || Set < 0)  Set = 0;  break;
  53   2                              case 5: DS12887_SetTime(DS12887_Year  , Set);break;
  54   2                              default: break;
  55   2              }
  56   1      }
  57          
  58          /*--------------------------------------------------------------*/
  59          //主函数
  60          void main(void)
  61          {       
  62   1              
  63   1              SYSTEMTIME CurrentTime;
  64   1              lcd_init();
  65   1              DS12887_Init();
  66   1      
  67   1              lcd_pos(0,0);
  68   1              prints("Date:");
  69   1              lcd_pos(0,1);
  70   1              prints("Time:");
  71   1              k = 6;  //不改变时间
  72   1          while(1)
  73   1              {
  74   2                      DS12887_GetTime(&CurrentTime);
  75   2                      DateToStr(&CurrentTime);
  76   2                      TimeToStr(&CurrentTime);
  77   2                      lcd_pos(6,0);
  78   2                      prints(CurrentTime.DateString);
  79   2                      lcd_pos(6,1);
  80   2                      prints(CurrentTime.TimeString);
  81   2                      delay200ms();
  82   2                      Keysan();
  83   2              }
  84   1      }
  85          
C51 COMPILER V7.06   LCD12887_1                                                            10/26/2008 21:45:08 PAGE 11  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION lcd_busy (BEGIN)
                                           ; SOURCE LINE # 36
                                           ; SOURCE LINE # 37
0000         ?C0003:
                                           ; SOURCE LINE # 38
                                           ; SOURCE LINE # 39
0000 C2B6              CLR     ep
                                           ; SOURCE LINE # 40
0002 C2B4              CLR     rs
                                           ; SOURCE LINE # 41
0004 D2B5              SETB    rw
                                           ; SOURCE LINE # 42
0006 75A0FF            MOV     io,#0FFH
                                           ; SOURCE LINE # 43
0009 D2B6              SETB    ep
                                           ; SOURCE LINE # 44
000B 00                NOP     
                                           ; SOURCE LINE # 45
000C 20A7F1            JB      bz,?C0003
                                           ; SOURCE LINE # 46
000F C2B6              CLR     ep
                                           ; SOURCE LINE # 47
0011 22                RET     
             ; FUNCTION lcd_busy (END)

             ; FUNCTION _lcd_wcmd (BEGIN)
                                           ; SOURCE LINE # 52
;---- Variable 'cmd' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 53
                                           ; SOURCE LINE # 54
0000 120000      R     LCALL   lcd_busy
                                           ; SOURCE LINE # 55
0003 C2B4              CLR     rs
                                           ; SOURCE LINE # 56
0005 C2B5              CLR     rw
                                           ; SOURCE LINE # 57
0007 D2B6              SETB    ep
                                           ; SOURCE LINE # 58
0009 8FA0              MOV     io,R7
                                           ; SOURCE LINE # 59
000B C2B6              CLR     ep
                                           ; SOURCE LINE # 60
000D 22                RET     
             ; FUNCTION _lcd_wcmd (END)

             ; FUNCTION _lcd_wdat (BEGIN)
                                           ; SOURCE LINE # 65
;---- Variable 'Data' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 66
                                           ; SOURCE LINE # 67
0000 120000      R     LCALL   lcd_busy
                                           ; SOURCE LINE # 68
0003 D2B4              SETB    rs
                                           ; SOURCE LINE # 69
0005 C2B5              CLR     rw
                                           ; SOURCE LINE # 70
0007 D2B6              SETB    ep
                                           ; SOURCE LINE # 71
0009 8FA0              MOV     io,R7
C51 COMPILER V7.06   LCD12887_1                                                            10/26/2008 21:45:08 PAGE 12  

                                           ; SOURCE LINE # 72
000B C2B6              CLR     ep
                                           ; SOURCE LINE # 73
000D 22                RET     
             ; FUNCTION _lcd_wdat (END)

             ; FUNCTION _lcd_pos (BEGIN)
                                           ; SOURCE LINE # 78
;---- Variable 'x' assigned to Register 'R6' ----
0000 AE07              MOV     R6,AR7
                                           ; SOURCE LINE # 79
                                           ; SOURCE LINE # 80
0002 EE                MOV     A,R6
0003 300004      R     JNB     y,?C0007
0006 44C0              ORL     A,#0C0H
0008 8002              SJMP    ?C0067
000A         ?C0007:
                                           ; SOURCE LINE # 81
000A 4480              ORL     A,#080H
000C         ?C0067:
000C FF                MOV     R7,A
000D 120000      R     LCALL   _lcd_wcmd
                                           ; SOURCE LINE # 82
0010         ?C0009:
0010 22                RET     
             ; FUNCTION _lcd_pos (END)

             ; FUNCTION _prints (BEGIN)
                                           ; SOURCE LINE # 97
;---- Variable 'string' assigned to Register 'R1/R2/R3' ----
                                           ; SOURCE LINE # 98
0000         ?C0010:
                                           ; SOURCE LINE # 99
0000 120000      E     LCALL   ?C?CLDPTR
0003 FF                MOV     R7,A
0004 600C              JZ      ?C0012
0006 120000      R     LCALL   _lcd_wdat
0009 7401              MOV     A,#01H
000B 29                ADD     A,R1
000C F9                MOV     R1,A
000D E4                CLR     A
000E 3A                ADDC    A,R2
000F FA                MOV     R2,A
0010 80EE              SJMP    ?C0010
                                           ; SOURCE LINE # 100
0012         ?C0012:
0012 22                RET     
             ; FUNCTION _prints (END)

             ; FUNCTION lcd_init (BEGIN)
                                           ; SOURCE LINE # 105
                                           ; SOURCE LINE # 106
                                           ; SOURCE LINE # 107
0000 7F38              MOV     R7,#038H
0002 120000      R     LCALL   _lcd_wcmd
                                           ; SOURCE LINE # 108
0005 7F06              MOV     R7,#06H
0007 120000      R     LCALL   _lcd_wcmd
                                           ; SOURCE LINE # 109
000A 7F0C              MOV     R7,#0CH
000C 120000      R     LCALL   _lcd_wcmd
                                           ; SOURCE LINE # 110
C51 COMPILER V7.06   LCD12887_1                                                            10/26/2008 21:45:08 PAGE 13  

000F 7F01              MOV     R7,#01H
0011 020000      R     LJMP    _lcd_wcmd
             ; FUNCTION lcd_init (END)

             ; FUNCTION _DS12887_Write (BEGIN)
                                           ; SOURCE LINE # 62
;---- Variable 'Value' assigned to Register 'R5' ----
;---- Variable 'Address' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 63
                                           ; SOURCE LINE # 64
0000 C2B0              CLR     DS_AS
                                           ; SOURCE LINE # 65
0002 D2B2              SETB    DS_DS
                                           ; SOURCE LINE # 66
0004 D2B1              SETB    DS_RW
                                           ; SOURCE LINE # 67
0006 D2B0              SETB    DS_AS
                                           ; SOURCE LINE # 68
0008 8F90              MOV     DS_DAT,R7
                                           ; SOURCE LINE # 69
000A C2B0              CLR     DS_AS
                                           ; SOURCE LINE # 70
000C C2B1              CLR     DS_RW
                                           ; SOURCE LINE # 71
000E 8D90              MOV     DS_DAT,R5
                                           ; SOURCE LINE # 72
0010 D2B1              SETB    DS_RW
                                           ; SOURCE LINE # 73
0012 D2B0              SETB    DS_AS
                                           ; SOURCE LINE # 74
0014 22                RET     
             ; FUNCTION _DS12887_Write (END)

             ; FUNCTION _DS12887_Read (BEGIN)
                                           ; SOURCE LINE # 79
;---- Variable 'Address' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 80
                                           ; SOURCE LINE # 82
0000 C2B0              CLR     DS_AS
                                           ; SOURCE LINE # 83
0002 D2B2              SETB    DS_DS
                                           ; SOURCE LINE # 84
0004 D2B1              SETB    DS_RW
                                           ; SOURCE LINE # 85
0006 D2B0              SETB    DS_AS
                                           ; SOURCE LINE # 86
0008 8F90              MOV     DS_DAT,R7
                                           ; SOURCE LINE # 87
000A C2B0              CLR     DS_AS
                                           ; SOURCE LINE # 88
000C C2B2              CLR     DS_DS
                                           ; SOURCE LINE # 89
000E 7590FF            MOV     DS_DAT,#0FFH
                                           ; SOURCE LINE # 90
;---- Variable 'DS_RDAT' assigned to Register 'R7' ----
0011 AF90              MOV     R7,DS_DAT
                                           ; SOURCE LINE # 91
0013 D2B2              SETB    DS_DS
                                           ; SOURCE LINE # 92
0015 D2B0              SETB    DS_AS
                                           ; SOURCE LINE # 93
                                           ; SOURCE LINE # 94
C51 COMPILER V7.06   LCD12887_1                                                            10/26/2008 21:45:08 PAGE 14  

0017         ?C0015:
0017 22                RET     
             ; FUNCTION _DS12887_Read (END)

             ; FUNCTION DS12887_Init (BEGIN)
                                           ; SOURCE LINE # 99
                                           ; SOURCE LINE # 100

⌨️ 快捷键说明

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