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

📄 da1302.lst

📁 液晶显示的完整程序
💻 LST
字号:
C51 COMPILER V8.08   DA1302                                                                06/02/2007 17:59:28 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE DA1302
OBJECT MODULE PLACED IN da1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE da1302.c DEBUG OBJECTEXTEND

line level    source

   1          //#include <at89c51RB2.h>
   2          #include <intrins.h>
   3          #include "ds1302.h"
   4          //#include "lm3228.h"
   5          #include "hanzi.h"
   6          
   7          #define uchar unsigned char
   8          #define nop() _nop_()
   9          uchar time1[8];
  10          uchar time2[15]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,':','A','P','M',0x00};//0-9,:,A,P,M的CG
             -ROM代码
  11          extern void Print(uchar *);
  12          extern void print_char(uchar);
  13          extern void GotoXY(uchar ,uchar );
  14          
  15          //从1302读取一个字节
  16          uchar read_1302(void)
  17          {
  18   1              uchar i,data_1302;
  19   1              
  20   1              for(i=0;i<8;i++)
  21   1              {       
  22   2                      
  23   2                      data_1302>>=1;
  24   2                      if(IO_DATA)
  25   2                      {
  26   3                              data_1302|=0x80;
  27   3                      }
  28   2                      CLK=1;
  29   2                      //nop();
  30   2                      CLK=0;
  31   2              }
  32   1              return(data_1302);
  33   1      }
  34          //向1302写入一个字节
  35          void write_1302(uchar data_1302)
  36          {
  37   1              uchar i;
  38   1              
  39   1              for(i=0;i<8;i++)
  40   1              {
  41   2                      
  42   2                      data_1302>>=1;
  43   2                      IO_DATA=CY;
  44   2                      CLK=0;
  45   2                      //nop();
  46   2                      CLK=1;
  47   2                      //nop();
  48   2                      CLK=0;
  49   2              }
  50   1              
  51   1      }
  52          //从1302的某地址读一个字节的数据
  53          uchar read_byte_1302(uchar addr)
  54          {
C51 COMPILER V8.08   DA1302                                                                06/02/2007 17:59:28 PAGE 2   

  55   1              uchar data_1302;
  56   1              RST=0;
  57   1              CLK=0;
  58   1              RST=1;
  59   1              write_1302(addr|0x01);
  60   1              data_1302=read_1302();
  61   1              CLK=1;
  62   1              RST=0;
  63   1              CLK=0;
  64   1              return (data_1302);
  65   1      }
  66          //向1302的某地址写入一个字节的数据
  67          void write_byte_1302(uchar addr,uchar data_1302)
  68          {
  69   1              RST=0;
  70   1              CLK=0;
  71   1              RST=1;
  72   1              write_1302(addr);
  73   1              write_1302(data_1302);
  74   1              CLK=1;
  75   1              RST=0;
  76   1              CLK=0;
  77   1      }
  78          //是否写保护
  79          void protect_1302(bit flag)
  80          {
  81   1              if(flag)
  82   1                      write_byte_1302(DS1302_CONTROL,0x80);
  83   1              else
  84   1                      write_byte_1302(DS1302_CONTROL,0x00);
  85   1      }
  86          
  87          //停止1302时钟
  88          void stop_1302(void)
  89          {
  90   1              write_byte_1302(DS1302_SECOND,0x80);
  91   1      }
  92          //启动1302时钟
  93          void start_1302(void)
  94          {
  95   1              write_byte_1302(DS1302_SECOND,0x00);
  96   1      }
  97          
  98          //读1302的时间序列
  99          void read_data(uchar *j)
 100          {
 101   1              uchar i;
 102   1              RST=0;
 103   1              CLK=0;
 104   1              RST=1;
 105   1              write_1302(0xbf);
 106   1              for(i=0;i<8;i++)
 107   1              {
 108   2                      *(j)=read_1302();
 109   2                      j++;
 110   2                      
 111   2              }
 112   1              CLK=1;
 113   1              RST=0;
 114   1              CLK=0;
 115   1      }
 116          //写1302的时间序列
C51 COMPILER V8.08   DA1302                                                                06/02/2007 17:59:28 PAGE 3   

 117          void write_data(uchar *j)
 118          {
 119   1              uchar i;
 120   1              RST=0;
 121   1              CLK=0;
 122   1              RST=1;
 123   1              write_1302(0xbe);
 124   1              for(i=0;i<8;i++)                                                 
 125   1              {
 126   2                      write_1302(*j);
 127   2                      j++;
 128   2              }
 129   1              CLK=1;
 130   1              RST=0;
 131   1              CLK=0;
 132   1      }       
 133          //显示时间
 134          void display_time(uchar lowaddr,uchar highaddr)
 135          {
 136   1                      
 137   1                      read_data(time1);
 138   1                      GotoXY(0,1);                                                                                    //读时间
 139   1      
 140   1                      if(time1[2]&0x80)                                                                                       //如果成立,即12小时制,否则24小时制
 141   1                      {                                                                                                                       //显示小时
 142   2                              if(time1[2]&0x20)                                                                               //如果成立,即下午,否则上午
 143   2                              {
 144   3                                      Print("PM:");
 145   3                                      if(time1[2]&0x10)                                                                       //下午
 146   3                                      {
 147   4                                              print_char(time2[(time1[2]&0x10)>>4]+'0');
 148   4                                              print_char(time2[time1[2]&0x0f]+'0');
 149   4                                      }
 150   3                                      else
 151   3                                      {
 152   4                                              Print("AM:");
 153   4                                              print_char(time2[14]+'0');
 154   4                                              print_char(time2[time1[2]&0x0f]+'0');
 155   4                                      }
 156   3                              }
 157   2                              else                                                                                                            //上午
 158   2                              {
 159   3                                      print_char(time2[11]+'0');
 160   3                                      print_char(time2[13]+'0');
 161   3                                        if(time1[2]&0x10)
 162   3                                      {
 163   4                                              print_char(time2[(time1[2]&0x10)>>4]+'0');
 164   4                                              print_char(time2[time1[2]&0x0f]+'0');
 165   4      
 166   4                                      }
 167   3                                      else
 168   3                                      {
 169   4                                              print_char(time2[14]+'0');                                      
 170   4                                              print_char(time2[time1[2]&0x0f]+'0');
 171   4                                      }
 172   3                              }
 173   2                      }
 174   1                       else                                                                                                                   //24小时制
 175   1                       {
 176   2                              if(time1[2]&0x30)
 177   2                              {
 178   3                                      print_char(time2[(time1[2]&0x30)>>4]+'0');
C51 COMPILER V8.08   DA1302                                                                06/02/2007 17:59:28 PAGE 4   

 179   3                                      print_char(time2[time1[2]&0x0f]+'0');
 180   3                              }
 181   2                              else
 182   2                              {
 183   3                                      print_char(time2[14]);
 184   3                                      print_char(time2[time1[2]&0x0f]+'0');
 185   3                              }
 186   2                      }                               
 187   1                      print_char(time2[10]);                                                          //显示:
 188   1      
 189   1                      print_char((time2[(time1[1]&0x70)>>4]+'0'));                            //显示分钟
 190   1                      print_char(time2[time1[1]&0x0f]+'0');
 191   1                      
 192   1      
 193   1      
 194   1                      print_char(time2[10]);                                                          //显示:
 195   1      
 196   1      
 197   1                      print_char((time2[(time1[0]&0x70)>>4]+'0'));                            //显示秒
 198   1      
 199   1                      print_char(time2[time1[0]&0x0f]+'0');
 200   1                      Print(" ");
 201   1                      print_char('0');
 202   1                      print_char(time2[time1[6]&0x07]+'0');
 203   1                      Print("-");
 204   1                      print_char(time2[time1[4]&0xf0>>4]+'0');
 205   1                      Print("-");
 206   1                      print_char(time2[time1[3]&0x0f]+'0');
 207   1      
 208   1      }
*** WARNING C280 IN LINE 134 OF DA1302.C: 'lowaddr': unreferenced local variable
*** WARNING C280 IN LINE 134 OF DA1302.C: 'highaddr': unreferenced local variable
 209          //设置时间
 210          void set_time(uchar *time)
 211          {
 212   1              protect_1302(0);                                                                                                                //清除写保护
 213   1                                                                                                                                                              //写预设时间
 214   1              write_data(time);
 215   1              
 216   1              start_1302();                                                                                                                    //启动1302
 217   1      
 218   1              protect_1302(1);                                                                                                                  //开启写保护
 219   1      }
 220          
 221          
 222           //显示星期
 223          void display_week(uchar lowaddr,uchar highaddr)
 224          {
 225   1                                                                //显示星期几
 226   1      }
*** WARNING C280 IN LINE 223 OF DA1302.C: 'lowaddr': unreferenced local variable
*** WARNING C280 IN LINE 223 OF DA1302.C: 'highaddr': unreferenced local variable
 227          //显示“现在时间”
 228          void display_currenttime(uchar lowaddr,uchar highaddr)
 229          {
 230   1              
 231   1      }
*** WARNING C280 IN LINE 228 OF DA1302.C: 'lowaddr': unreferenced local variable
*** WARNING C280 IN LINE 228 OF DA1302.C: 'highaddr': unreferenced local variable


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.08   DA1302                                                                06/02/2007 17:59:28 PAGE 5   

   CODE SIZE        =    503    ----
   CONSTANT SIZE    =   2167    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     23       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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