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

📄 time.lst

📁 应用案例
💻 LST
字号:
C51 COMPILER V7.07   TIME                                                                  06/13/2008 13:33:20 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE TIME
OBJECT MODULE PLACED IN time.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE time.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          ////////////////////////////////////////////////////////////
   2          #include<reg52.h>
   3          
   4          extern  void line_disp (unsigned char lines , unsigned char *chn);
   5           
   6          sbit    TIMER_CLK       =       P2^1;
   7          sbit    TIMER_IO    =   P2^2;
   8          sbit    TIMER_RST       =       P2^3;
   9          
  10          unsigned char bdata timer_data; 
  11          sbit            hbit_data       =       timer_data^7;
  12          sbit            lbit_data       =       timer_data^0;
  13          unsigned char bdata timer_address;
  14          sbit            lbit_addr       =       timer_address^0;
  15          
  16          
  17          unsigned char idata MINUTE;
  18          unsigned char idata HOUR;
  19          unsigned char idata DATE;
  20          unsigned char idata MONTH;
  21          unsigned char idata DAY;
  22          unsigned char idata YEAR;
  23          
  24          
  25          void delay (unsigned char us)   //delay time
  26          {
  27   1              while(us--);
  28   1      }
  29          
  30          void write_timer(unsigned char address,unsigned char value)
  31          {
  32   1              unsigned char i;
  33   1              timer_address   =       address;
  34   1              timer_data              =       value;
  35   1      
  36   1              TIMER_CLK       =       0 ;     delay(2);
  37   1              TIMER_RST       =       1 ;     delay(2);
  38   1              for (i=0;i<8;i++)     //写地址。
  39   1                      {        
  40   2                              TIMER_CLK = 0;
  41   2                              TIMER_IO  = lbit_addr;
  42   2                                                      delay(2);
  43   2                              TIMER_CLK = 1;
  44   2                              timer_address = timer_address>>1;
  45   2                      }
  46   1              for (i=0;i<8;i++)     //写数据
  47   1                      {
  48   2                              TIMER_CLK = 0;
  49   2                              TIMER_IO  = lbit_data;
  50   2                                                      delay(2);
  51   2                              TIMER_CLK=1;
  52   2                              timer_data = timer_data>>1;
  53   2                      }
  54   1              TIMER_RST       =       0 ;     delay(2);
  55   1              TIMER_CLK       =       0 ;
C51 COMPILER V7.07   TIME                                                                  06/13/2008 13:33:20 PAGE 2   

  56   1      }
  57          
  58          unsigned char read_timer(unsigned char address)
  59          {
  60   1              unsigned char i ;
  61   1              timer_address   =       address;
  62   1      
  63   1              TIMER_CLK       =       0 ;     delay(2);
  64   1              TIMER_RST       =       1 ;     delay(2);
  65   1              for (i=0;i<8;i++)           //写地址
  66   1                      {
  67   2                              TIMER_CLK = 0;
  68   2                              TIMER_IO  = lbit_addr;
  69   2                                                      delay(2);
  70   2                              TIMER_CLK = 1;
  71   2                              timer_address = timer_address>>1;
  72   2                      }
  73   1              TIMER_IO=1;
  74   1              for(i=0;i<7;i++)       //读数据
  75   1                      {
  76   2                              TIMER_CLK = 0; 
  77   2                              hbit_data = TIMER_IO;
  78   2                              TIMER_CLK = 1;
  79   2                              timer_data = timer_data>>1;
  80   2                      }
  81   1                      TIMER_CLK = 0;     //这里有第八位
  82   1                      hbit_data = TIMER_IO;
  83   1                      delay(2);
  84   1              TIMER_RST = 0 ;  delay(2);
  85   1              TIMER_CLK = 0;
  86   1              return timer_data;
  87   1      }
  88          
  89          
  90          void timer_init(void)
  91          {
  92   1              unsigned char flag;
  93   1              TIMER_CLK=0;
  94   1              TIMER_RST=0;
  95   1              flag = read_timer(0xc1);        //读标志
  96   1              if (flag != 0x55)
  97   1              {
  98   2                      write_timer(0x8e,0x00);  //关闭写保护
  99   2                      write_timer(0x8c,0x08);  //预制年份2008
 100   2                      write_timer(0x88,0x06);  //预制月份6
 101   2                      write_timer(0x86,0x13);  //预制日期13
 102   2                      write_timer(0x8a,0x05);  //预制星期5
 103   2                      write_timer(0x84,0x08);  //预制小时6
 104   2                      write_timer(0x82,0x00);  //预制分钟时间
 105   2              write_timer(0x90,0x00);  //写充电控制寄存器
 106   2                      write_timer(0xc0,0x55);  //写标志防止重复初始化
 107   2                      write_timer(0x80,0x00);  //启动时钟
 108   2                      write_timer(0x8e,0x80);  //打开写保护
 109   2              }
 110   1      }
 111          
 112          void readRTC(void)
 113          {
 114   1              YEAR   = read_timer(0x8d);
 115   1              DAY    = read_timer(0x8b);
 116   1              MONTH  = read_timer(0x89);
 117   1              DATE   = read_timer(0x87);
C51 COMPILER V7.07   TIME                                                                  06/13/2008 13:33:20 PAGE 3   

 118   1              HOUR   = read_timer(0x85);
 119   1              MINUTE = read_timer(0x83);
 120   1      }
 121          
 122          
 123          unsigned char code week[7][2]={{"一"},{"二"},{"三"},{"四"},{"五"},{"六"},{"天"}};
 124          
 125          void time_disp2 (void)
 126          {
 127   1              unsigned char timebar1[16]={"    年  月  日  "};
 128   1              unsigned char timebar2[16]={"    -   星期    "};
 129   1      
 130   1              readRTC();
 131   1      
 132   1              timebar1[2]=(YEAR>>4)+0x30;     timebar1[3]=(YEAR&0x0F)+0x30;
 133   1              timebar1[6]=(MONTH>>4)+0x30;    timebar1[7]=(MONTH&0x0F)+0x30;
 134   1              timebar1[10]=(DATE>>4)+0x30;    timebar1[11]=(DATE&0x0F)+0x30;
 135   1      
 136   1              timebar2[2]=(HOUR>>4)+0x30;             timebar2[3]=(HOUR&0x0F)+0x30;
 137   1              timebar2[5]=(MINUTE>>4)+0x30;           timebar2[6]=(MINUTE&0X0F)+0x30;
 138   1              timebar2[12]=week[DAY-1][0];        timebar2[13]=week[DAY-1][1];
 139   1      
 140   1              line_disp(0,timebar1);
 141   1              line_disp(1,timebar2);  
 142   1      }
 143          
 144          
 145          extern void rs232_send(unsigned char *address, unsigned char length);
 146          void time_disp1(unsigned char x)
 147          {
 148   1              unsigned char  timebar3[16]={"20  -  -     -  "};
 149   1      
 150   1              readRTC();
 151   1      
 152   1              timebar3[2]=(YEAR>>4)+0x30;             timebar3[3]=(YEAR&0X0F)+0x30;
 153   1              timebar3[5]=(MONTH>>4)+0x30;    timebar3[6]=(MONTH&0X0F)+0x30;
 154   1              timebar3[8]=(DATE>>4)+0x30;             timebar3[9]=(DATE&0X0F)+0x30;
 155   1              timebar3[11]=(HOUR>>4)+0x30;    timebar3[12]=(HOUR%0X0F)+0x30;
 156   1              timebar3[14]=(MINUTE>>4)+0x30;  timebar3[15]=(MINUTE&0X0F)+0x30;
 157   1      
 158   1              line_disp(0,timebar3);
 159   1              if(x)
 160   1                      rs232_send(timebar3,16);
 161   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    621    ----
   CONSTANT SIZE    =     62    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      49
   IDATA SIZE       =      6    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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