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

📄 无调时.lst

📁 自己做的单片机Proteus仿真实例
💻 LST
字号:
C51 COMPILER V8.02   蝊礯时                                                                07/26/2012 17:35:48 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 蝊礯时
OBJECT MODULE PLACED IN 无调时.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 无调时.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          sbit lcden=P2^3;
   5          sbit lcdrs=P2^4;
   6          sbit reset=P2^5;
   7          sbit io=P2^6;
   8          sbit scl=P2^7;
   9          #define DS1302_SECOND   0x80
  10          #define DS1302_MINUTE   0x82
  11          #define DS1302_HOUR             0x84 
  12          #define DS1302_WEEK             0x8A
  13          #define DS1302_DAY              0x86
  14          #define DS1302_MONTH    0x88
  15          #define DS1302_YEAR             0x8C
  16          char Second,Minute,Hour,Week,Day,Month,Year;
  17          uchar  DateString[9];
  18          uchar  TimeString[9]; 
  19          void delay(uint z)
  20          {
  21   1           uint x,y;
  22   1               for(x=z;x>0;x--)  
  23   1                 for(y=110;y>0;y--);
  24   1      }
  25          void write_byte(uchar date)     //实时时钟写入一字节(内部函数)
  26          { 
  27   1          uchar i,j;
  28   1          j=date;
  29   1              scl=0;
  30   1          for(i=8;i>0;i--)
  31   1          {
  32   2                  j=j>>1;
  33   2              io=CY;                  //相当于汇编中的 RRC
  34   2              scl=1;
  35   2                  scl=0; 
  36   2          } 
  37   1      }
  38          
  39          uchar read_byte()       //实时时钟读取一字节(内部函数)
  40          { 
  41   1          uchar i,j;
  42   1          for(i=8;i>0;i--)
  43   1          {
  44   2              j=j>>1;
  45   2                      if(io==1) 
  46   2                        j|=0x80;                               //相当于汇编中的 RRC 
  47   2              scl=1;
  48   2                      scl=0;
  49   2          } 
  50   1          return(j); 
  51   1      }
  52          
  53          void write1302(uchar addr,uchar date)   //addr: DS1302地址, date 要写的数据
  54          {
  55   1          reset=0;
C51 COMPILER V8.02   蝊礯时                                                                07/26/2012 17:35:48 PAGE 2   

  56   1              scl=0;
  57   1              reset=1;
  58   1          write_byte(addr);
  59   1              write_byte(date);               // 写1Byte数据
  60   1          scl=1;
  61   1              reset=0;
  62   1      } 
  63          
  64          uchar read1302(uchar addr)      //读取DS1302某地址的数据
  65          {
  66   1          uchar date;
  67   1          reset=0;
  68   1              scl=0;
  69   1              reset=1;
  70   1          write_byte(addr|0x01);        // 地址,命令 
  71   1          date=read_byte();            // 读1Byte数据
  72   1          scl=1;
  73   1          reset=0;
  74   1          return(date);
  75   1      }
  76          void gettime()
  77          {   
  78   1          
  79   1              uchar value;
  80   1              value=read1302(DS1302_SECOND);
  81   1              Second=((value&0x70)>>4)*10+(value&0x0F);
  82   1      
  83   1              value=read1302(DS1302_MINUTE);
  84   1              Minute=((value&0x70)>>4)*10+(value&0x0F);
  85   1      
  86   1              value=read1302(DS1302_HOUR);
  87   1              Hour=((value&0x70)>>4)*10+(value&0x0F);
  88   1      
  89   1              value=read1302(DS1302_DAY);
  90   1              Day=((value&0x70)>>4)*10+(value&0x0F);
  91   1                      
  92   1              value=read1302(DS1302_WEEK);
  93   1              Week=((value&0x70)>>4)*10+(value&0x0F);
  94   1      
  95   1              value=read1302(DS1302_MONTH);
  96   1              Month=((value&0x70)>>4)*10+(value&0x0F);
  97   1      
  98   1              value=read1302(DS1302_YEAR);
  99   1              Year=((value&0x70)>>4)*10+(value&0x0F); 
 100   1              
 101   1      }
 102          void Datechange()
 103          {
 104   1              DateString[0]=Year/10+0x30;
 105   1              DateString[1]=Year%10+0x30;
 106   1              DateString[2]='-';
 107   1              DateString[3]=Month/10+'0';
 108   1              DateString[4]=Month%10+'0';
 109   1          DateString[5]='-';
 110   1              DateString[6]=Day/10+'0';
 111   1              DateString[7]=Day%10+'0';
 112   1              DateString[8]='\0';
 113   1      }
 114          
 115          void Timechange()
 116          {
 117   1              TimeString[0]=Hour/10+'0';
C51 COMPILER V8.02   蝊礯时                                                                07/26/2012 17:35:48 PAGE 3   

 118   1              TimeString[1]=Hour%10+'0';
 119   1              TimeString[2]=':';
 120   1              TimeString[3]=Minute/10+'0';
 121   1              TimeString[4]=Minute%10+'0';
 122   1              TimeString[5]=':';
 123   1              TimeString[6]=Second/10+'0';
 124   1              TimeString[7]=Second%10+'0';
 125   1              TimeString[8]='\0';
 126   1      } 
 127          /////////////////////////////////////////////////////////////////////////////////////////////////////////
 128          void write_com(uchar com)
 129          {
 130   1           lcdrs=0;
 131   1               P0=com;
 132   1               delay(5);
 133   1               lcden=1;
 134   1               lcden=0;
 135   1      }
 136          void write_data(uchar date)
 137          {
 138   1           lcdrs=1;
 139   1               P0=date;
 140   1               delay(5);
 141   1               lcden=1;
 142   1               lcden=0;
 143   1      }
 144          void display()
 145          {
 146   1               uchar num;
 147   1           write_com(0x81);
 148   1               write_data(0x32);
 149   1               write_data(0x30);
 150   1               for(num=0;num<9;num++) 
 151   1                 {
 152   2                       write_data(DateString[num]);
 153   2                           delay(5);
 154   2                 }
 155   1               write_com(0x80+0x44);
 156   1               for(num=0;num<9;num++) 
 157   1                 {
 158   2                       write_data(TimeString[num]);
 159   2                           delay(5);
 160   2                 }
 161   1               write_com(0x80+12);
 162   1               switch(Week)
 163   1               {
 164   2                    case 1: write_data('M');
 165   2                                delay(5);
 166   2                                        write_data('O');
 167   2                                        delay(5);
 168   2                                        write_data('N');
 169   2                                        break;
 170   2                        case 2: write_data('T');
 171   2                                delay(5);
 172   2                                        write_data('H');
 173   2                                        delay(5);
 174   2                                        write_data('U');
 175   2                                        break;
 176   2                        case 3: write_data('W');
 177   2                                delay(5);
 178   2                                        write_data('E');
 179   2                                        delay(5);
C51 COMPILER V8.02   蝊礯时                                                                07/26/2012 17:35:48 PAGE 4   

 180   2                                        write_data('D');
 181   2                                        break;
 182   2                        case 4: write_data('T');
 183   2                                delay(5);
 184   2                                        write_data('H');
 185   2                                        delay(5);
 186   2                                        write_data('U');
 187   2                                        break;
 188   2                        case 5: write_data('F');
 189   2                                delay(5);
 190   2                                        write_data('R');
 191   2                                        delay(5);
 192   2                                        write_data('I');
 193   2                                        break;
 194   2                        case 6: write_data('S');
 195   2                                delay(5);
 196   2                                        write_data('A');
 197   2                                        delay(5);
 198   2                                        write_data('T');
 199   2                                        break;                 
 200   2                        case 7: write_data('S');
 201   2                                delay(5);
 202   2                                        write_data('U');
 203   2                                        delay(5);
 204   2                                        write_data('N');
 205   2                                        break;
 206   2                }
 207   1      }
 208          
 209          ////////////////////////////////////////////////////////////////////////////////////////////////////////
 210          void lcd_init()
 211          {       
 212   1           uchar num;
 213   1           lcden=0;
 214   1           write_com(0x38);
 215   1               write_com(0x0c);
 216   1               write_com(0x06);
 217   1           write_com(0x01); 
 218   1               write_com(0x81);
 219   1      
 220   1      }
*** WARNING C280 IN LINE 212 OF 无调时.C: 'num': unreferenced local variable
 221          void init1302()
 222          {
 223   1          write1302(0x8e,0x00);
 224   1              write1302(0x80,((50/10)<<4|(50%10)));   //根据写秒寄存器命令字,写入秒的初始值
 225   1          write1302(0x82,((59/10)<<4|(59%10)));   //根据写分寄存器命令字,写入分的初值
 226   1          write1302(0x84,((12/10)<<4|(12%10))); 
 227   1          write1302(0x86,((29/10)<<4|(29%10))); 
 228   1          write1302(0x88,((2/10)<<4|(2%10))); 
 229   1          write1302(0x8c,((12/10)<<4|(12%10)));  
 230   1          write1302(0x8a,((4/10)<<4|(4%10)));
 231   1      } 
 232          void  main()
 233          {
 234   1          lcd_init();
 235   1              init1302();
 236   1              
 237   1          while(1) 
 238   1         {     
 239   2               gettime();
 240   2               Datechange();
C51 COMPILER V8.02   蝊礯时                                                                07/26/2012 17:35:48 PAGE 5   

 241   2               Timechange();
 242   2               display();
 243   2         }    
 244   1        
 245   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    755    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     25       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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