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

📄 ledsubfuc.lst

📁 在51上控制LED屏的显示和输出
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.02a   LEDSUBFUC                                                            05/26/2005 13:15:53 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE LEDSUBFUC
OBJECT MODULE PLACED IN ledsubfuc.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ledsubfuc.c OPTIMIZE(4,SPEED)

stmt level    source

   1          /*******************************************************************************/
   2          /******  RTC&TEMPERATURE SUB SYSTEM ******/
   3          
   4          /******************DESIGNED BY LINGFENG*************2004/9/2*********************/
   5          /******************CHANGE BY CAOCONG****************2004/10/10*******************/
   6          
   7          
   8          /*******************************************************************************/
   9          
  10          
  11          /********include files**********************/
  12          
  13          //#include<w77e58.h>
  14          #include<absacc.h>
  15          #include <setjmp.h>
  16          #include<intrins.h>
  17          #include<string.h>
  18          #include"ledsubfuc.h"
  19          
  20          
  21          
  22          /*********************************program******************************/
  23          
  24          
  25          
  26          /***********DS1820 sub_function****************************************/
  27          void delay100m()
  28           {
  29   1              uchar i,j,k;
  30   1              for(i=0;i<8;i++)
  31   1                      {
  32   2                              for(j=0;j<25;j++)
  33   2                                      {
  34   3                                              for(k=0;k<250;k++);
  35   3                                      }
  36   2                      }
  37   1       }
  38          
  39          void delay15()                        //delay time is  15us
  40          {
  41   1              uchar i;
  42   1              for(i=0;i<5;i++);
  43   1      }
  44          
  45          void delay60()                       //delay time is 60us     
  46          {
  47   1              uchar i;
  48   1              for(i=0;i<20;i++);
  49   1      }
  50          
  51          void write_0_IO()
  52          {
  53   1              DS1820=1;
  54   1              NOP;
  55   1              DS1820=0;
C51 COMPILER V7.02a   LEDSUBFUC                                                            05/26/2005 13:15:53 PAGE 2   

  56   1          delay15();                                          //delay 60us
  57   1              delay15();
  58   1              delay15();
  59   1              delay15();
  60   1              DS1820=1;                                        //over 
  61   1              NOP;
  62   1              NOP;
  63   1      
  64   1      }
  65          
  66          void write_1_IO()
  67          {
  68   1              DS1820=1;
  69   1              NOP;
  70   1              DS1820=0;
  71   1              NOP;
  72   1              NOP;
  73   1              NOP;
  74   1              NOP;
  75   1              NOP;
  76   1              NOP;
  77   1              NOP;
  78   1              DS1820=1;
  79   1              NOP;
  80   1              NOP;
  81   1              NOP;
  82   1              NOP;
  83   1              NOP;
  84   1              NOP;
  85   1              NOP;
  86   1              delay15();
  87   1              delay15();
  88   1              delay15();
  89   1              DS1820=1;     // over
  90   1              NOP;
  91   1      
  92   1      }
  93          
  94          
  95          bit read_IO()
  96          {
  97   1              bit b;
  98   1              DS1820 =1;
  99   1              DS1820=0;
 100   1              NOP;
 101   1              NOP;
 102   1              DS1820=1;
 103   1              NOP;
 104   1              NOP;
 105   1              NOP;
 106   1              NOP;
 107   1              NOP;
 108   1              NOP;
 109   1              NOP;
 110   1              NOP;
 111   1              NOP;
 112   1              b=DS1820;
 113   1              delay15();
 114   1              delay15();      
 115   1              delay15();
 116   1              NOP;
 117   1              NOP;
C51 COMPILER V7.02a   LEDSUBFUC                                                            05/26/2005 13:15:53 PAGE 3   

 118   1              DS1820=1;                //over
 119   1              NOP;
 120   1              return b;
 121   1              
 122   1      }
 123          
 124          void reset_IO()
 125          {
 126   1              uchar i;
 127   1              DS1820=1;
 128   1              DS1820=0;
 129   1              for(i=0;i<9;i++)
 130   1                      {
 131   2                              delay60();                   //----540us----
 132   2                      }
 133   1              DS1820=1;
 134   1             delay15();
 135   1              delay15();                  //----delay 30us-----
 136   1              while(DS1820);
 137   1              for(i=0;i<8;i++)
 138   1                      {
 139   2                              delay60();
 140   2                      }
 141   1              DS1820=1;             //over
 142   1              
 143   1      }
 144          
 145          void write_b_IO(uchar byte)            //write byte data to ds1820
 146          {
 147   1              uchar i;
 148   1              for(i=0;i<8;i++)
 149   1                      {
 150   2                              if(byte&0x01)
 151   2                                      {
 152   3                                              write_1_IO();
 153   3                                      }
 154   2                              else
 155   2                                      {
 156   3                                              write_0_IO();
 157   3                                      }
 158   2                              byte=byte>>1;
 159   2                      }
 160   1      }
 161          
 162          uchar read_b_IO()                     //read byte data from ds1820
 163          {
 164   1              uchar i,j;
 165   1              bit  b;
 166   1              j=0;
 167   1              for(i=0;i<8;i++)
 168   1                      {
 169   2                              b=read_IO();
 170   2                              if(b){
 171   3                                      j+=1;
 172   3                                      }
 173   2                              j=_cror_(j,1);   //sycle right shift a bit
 174   2                      }
 175   1              return j;
 176   1              
 177   1      }
 178          
 179          
C51 COMPILER V7.02a   LEDSUBFUC                                                            05/26/2005 13:15:53 PAGE 4   

 180          
 181          void ds1820_ini()
 182          {               
 183   1      
 184   1              reset_IO();                     //reset the io
 185   1              
 186   1      }
 187          
 188          
 189           
 190          
 191          void  get_temp(uchar time[])
 192          {
 193   1              uchar i;
 194   1              bit b;
 195   1              b=0;
 196   1              reset_IO();
 197   1              write_b_IO(0xcc);   //skip the ROM
 198   1              write_b_IO(0x44);                       //convert T
 199   1              for(i=1;i<20;i++)  
 200   1              {                                     //delay 2s
 201   2                      delay100m();      
 202   2                              watchdog();
 203   2                      }
 204   1              while(!b){
 205   2                      b=read_IO();
 206   2                      }
 207   1              reset_IO();
 208   1              write_b_IO(0xcc);   //skip the ROM
 209   1             write_b_IO(0xbe);                       //read T
 210   1             temp_x=read_b_IO();                      // T lsb
 211   1             temp_z=read_b_IO();                      // T  msb
 212   1             reset_IO();
 213   1          
 214   1      
 215   1                //temp_z store sign of temperature data  
 216   1                // if temp_z is 0xff the temperature is minus 
 217   1                //temp_x store temperature data
 218   1                // bit7-bit4 is temperature`s HSB   bit3-bit0 is temperature`s LSB
 219   1              if (temp_z)                               
 220   1                      {                                       
 221   2                      temp_x=temp_x^0xff;                    
 222   2                      temp_x=temp_x+0x01;                            
 223   2                      }
 224   1             temp_x=temp_x>>1;       //int the temperature data
 225   1              i=temp_x/10;            //temperature`s HSB                        
 226   1              i=i<<4;
 227   1              i|=temp_x%10;           //add temperature`s LSB
 228   1              time[7]=temp_z;
 229   1             time[8]=temp_x;       
 230   1      
 231   1      }
 232                  
 233                 
 234                                              
 235           
 236          
 237          
 238          
 239                    
 240          
 241          
C51 COMPILER V7.02a   LEDSUBFUC                                                            05/26/2005 13:15:53 PAGE 5   

 242                   
 243          
 244          
 245          
 246          
 247           
 248            
 249          
 250          
 251          /*****************PCF8563 sub function********************************/
 252          
 253          
 254          void start_i2c(void)
 255          {
 256   1              SDA=1;                    //ready for send  signal of begin                     
 257   1          NOP;
 258   1                      
 259   1              SCL=1;
 260   1              NOP;                    
 261   1              NOP;
 262   1              NOP;
 263   1              NOP;
 264   1              NOP; 
 265   1              
 266   1              SDA=0;                   //send  signal of beign  
 267   1              NOP;     
 268   1              NOP;
 269   1              NOP;
 270   1              NOP;
 271   1              NOP;
 272   1              
 273   1              SCL=0;                   //control i2c
 274   1              NOP;
 275   1              NOP;
 276   1              
 277   1      }
 278          
 279          
 280          void stop_i2c(void)
 281          {
 282   1      
 283   1              SDA=0;                   //ready send  signal of end
 284   1              NOP;
 285   1              
 286   1              SCL=1;   
 287   1              NOP;
 288   1              NOP;
 289   1              NOP;
 290   1              NOP;
 291   1              NOP;
 292   1              
 293   1              SDA=1;                  //send   signal  of end  
 294   1              NOP;
 295   1              NOP;
 296   1              NOP;

⌨️ 快捷键说明

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