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

📄 iic-tune.lst

📁 全数字高清电视数字调谐器
💻 LST
字号:
C51 COMPILER V7.01  IIC_TUNE                                                               08/17/2003 17:24:35 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE IIC_TUNE
OBJECT MODULE PLACED IN .\Iic-tune.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE .\Iic-tune.c LARGE MODDP2 DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          #include<reg51.h>
   3          #include<intrins.h>
   4          #include <stdio.h>
   5          
   6          
   7          #define DEBUG 1
   8          #define uchar unsigned char
   9          #define uint unsigned int
  10          
  11          
  12          sbit sdat=P2^1;
  13          sbit sclt=P2^2;
  14          
  15          sbit ac0=ACC^0;          /*定义ACC的位,利用ACC操作速度最快*/
  16          sbit ac1=ACC^1;
  17          sbit ac2=ACC^2;
  18          sbit ac3=ACC^3;
  19          sbit ac4=ACC^4;
  20          sbit ac5=ACC^5;
  21          sbit ac6=ACC^6;
  22          sbit ac7=ACC^7;
  23          
  24          
  25          extern void delay1(unsigned int i);
  26          extern void delay0();
  27          
  28          
  29          void i2c_start_t(void);    /*起始*/
  30          void i2c_stop_t(void);     /*停止*/
  31          bit wait_ack_t(void);     /*等待24c02应答*/
  32          //void send_ack(void);     /*向24c02发送应答*/
  33          void sendnot_ack_t(void);    /*向24c02发送非应答*/
  34          void i2c_sendbyte_t(uchar ch);/*写发送移位*/
  35          unsigned char i2c_readbyte_t(void);    /*读移位*/
  36          
  37          
  38          unsigned char i2c_read_a(unsigned char slave,
  39                                                      unsigned char address);//单字节读
  40           bit i2c_write_a(unsigned char slave,uchar address,
  41                                      unsigned char fb[],unsigned char sun);//多字节写
  42           bit i2c_write_b(unsigned char slave, uchar address, unsigned char fb);
  43           void write_b(unsigned char slave, unsigned char address, unsigned char fb);
  44           void write_a(unsigned char slave,unsigned char address,
  45                                      unsigned char fb[],unsigned char sun);
  46          
  47          
  48           void i2c_start_t(void)
  49          {
  50   1        
  51   1        sclt=1;   
  52   1        sdat=1; 
  53   1        delay0();
  54   1        sclt=1;
  55   1        delay0();
C51 COMPILER V7.01  IIC_TUNE                                                               08/17/2003 17:24:35 PAGE 2   

  56   1        sdat=0;
  57   1        delay0();
  58   1        sclt=0;
  59   1        delay0();
  60   1        }
  61          
  62          
  63          
  64          void i2c_stop_t(void)
  65          {
  66   1         sclt=0;     
  67   1         _nop_();
  68   1         sdat=0;
  69   1         delay0();
  70   1         sclt=1;
  71   1         delay0();
  72   1         sdat=1;
  73   1         delay0();  
  74   1         //    sclt=0;
  75   1         //    sdat=0;
  76   1             }
  77          
  78          
  79          bit wait_ack_t(void)
  80          {
  81   1         uchar i;
  82   1         sclt=0;
  83   1         _nop_();
  84   1         _nop_();
  85   1         sdat=1;
  86   1         delay0();
  87   1         sclt=1;
  88   1         delay0();
  89   1         while(sdat)
  90   1                       {
  91   2                                        for(i=0;i<=5;i++)
  92   2                                                   {
  93   3                                                                          if(!sdat)
  94   3                                                                                  {
  95   4                                                                                        sclt=0;
  96   4                                                                                        return(0);
  97   4                                                                                        }
  98   3                                                                        }
  99   2                                        
 100   2                                        return(1);
 101   2                                        }
 102   1             sclt=0;
 103   1                       return(0);
 104   1        }
 105          /*
 106          void send_ack(void)
 107          {
 108             sdat=0;
 109             delay0();
 110             sclt=1;
 111             delay0();
 112             sclt=0;
 113           }
 114          */
 115          
 116          void sendnot_ack_t(void)
 117          {
C51 COMPILER V7.01  IIC_TUNE                                                               08/17/2003 17:24:35 PAGE 3   

 118   1             sdat=1;
 119   1             delay0();
 120   1             sclt=1;
 121   1             delay0();
 122   1             sclt=0;
 123   1      }
 124          
 125          
 126          void i2c_sendbyte_t(uchar ch)
 127          {
 128   1      ACC=ch;  
 129   1                 sdat=ac7;_nop_();sclt=1;delay0();sclt=0;delay0();
 130   1                 sdat=ac6;_nop_();sclt=1;delay0();sclt=0;delay0();
 131   1                 sdat=ac5;_nop_();sclt=1;delay0();sclt=0;delay0();
 132   1                 sdat=ac4;_nop_();sclt=1;delay0();sclt=0;delay0();
 133   1                 sdat=ac3;_nop_();sclt=1;delay0();sclt=0;delay0();
 134   1                 sdat=ac2;_nop_();sclt=1;delay0();sclt=0;delay0();
 135   1                 sdat=ac1;_nop_();sclt=1;delay0();sclt=0;delay0();
 136   1                 sdat=ac0;_nop_();sclt=1;delay0();sclt=0;delay0();
 137   1      }
 138          
 139          
 140          unsigned char i2c_readbyte_t(void)
 141          {
 142   1            uchar sf;
 143   1           sdat=1;_nop_();_nop_();
 144   1      sclt=1;delay0();ac7=sdat;sclt=0;delay0();
 145   1      sclt=1;delay0();ac6=sdat;sclt=0;delay0();
 146   1      sclt=1;delay0();ac5=sdat;sclt=0;delay0();
 147   1      sclt=1;delay0();ac4=sdat;sclt=0;delay0();
 148   1      sclt=1;delay0();ac3=sdat;sclt=0;delay0();
 149   1      sclt=1;delay0();ac2=sdat;sclt=0;delay0();
 150   1      sclt=1;delay0();ac1=sdat;sclt=0;delay0();
 151   1      sclt=1;delay0();ac0=sdat;sclt=0;delay0();
 152   1      sf=ACC;
 153   1      return(sf);
 154   1      }
 155          
 156          
 157          unsigned char i2c_read_a(unsigned char slave,
 158                                                      unsigned char address)//单字节读
 159          {
 160   1      unsigned char dd=slave&0xfe;//写
 161   1      unsigned char dc=slave|0x01;//读
 162   1      unsigned char ae;
 163   1       delay1(2000);
 164   1        i2c_start_t();
 165   1           i2c_sendbyte_t(dd);
 166   1           if(wait_ack_t())
 167   1                    {
 168   2                     i2c_stop_t();
 169   2                   return(0);
 170   2                     }
 171   1                i2c_sendbyte_t(address);
 172   1                if(wait_ack_t())
 173   1                  {
 174   2                     i2c_stop_t();
 175   2                   return(0);
 176   2                     }
 177   1                i2c_stop_t();
 178   1                delay1(300);
 179   1                
C51 COMPILER V7.01  IIC_TUNE                                                               08/17/2003 17:24:35 PAGE 4   

 180   1            i2c_start_t();
 181   1               i2c_sendbyte_t(dc);
 182   1            if(wait_ack_t())
 183   1                  {
 184   2                     i2c_stop_t();
 185   2                   return(0);
 186   2                     }
 187   1            ae=i2c_readbyte_t();
 188   1                   sendnot_ack_t();
 189   1                   i2c_stop_t();
 190   1                   return(ae);
 191   1      }
 192          
 193          
 194          
 195           bit i2c_write_a(unsigned char slave,uchar address,
 196                                      unsigned char fb[],unsigned char sun)//多字节写
 197           {
 198   1         
 199   1            uchar dd;//写
 200   1              uchar i;
 201   1              
 202   1           dd=slave&0xfe;//写
 203   1            delay1(600);
 204   1           i2c_start_t();
 205   1          i2c_sendbyte_t(dd); 
 206   1            if(wait_ack_t())
 207   1                  {
 208   2                     i2c_stop_t();
 209   2                      #if(DEBUG)
 210   2                    //    printf("写多字节器件地址off=0x%2x\n",slave);               
 211   2                           #endif
 212   2                   return(0);
 213   2                     }     
 214   1              i2c_sendbyte_t(address);
 215   1                if(wait_ack_t())
 216   1                  {
 217   2                     i2c_stop_t();              
 218   2                   return(0);
 219   2                     }          
 220   1                     
 221   1            for(i=0;i<sun;i++)
 222   1                   {
 223   2                     i2c_sendbyte_t(fb[i]);
 224   2                       if(wait_ack_t())
 225   2                         {
 226   3                          i2c_stop_t();  
 227   3                           #if(DEBUG)
 228   3                      //  printf("多字节写a,器件地址=0x%2x\n",slave);
 229   3                     //   printf("多字节写b,address=0x%2x\n",i);
 230   3                           #endif
 231   3                          return(0);
 232   3                         }    
 233   2                       delay1(200);  
 234   2                     }
 235   1                     i2c_stop_t();    
 236   1                   return(1);
 237   1      }
 238          
 239          bit i2c_write_b(unsigned char slave, uchar address, unsigned char fb)
 240          {                    //单字节写
 241   1        uchar dd;//写     
C51 COMPILER V7.01  IIC_TUNE                                                               08/17/2003 17:24:35 PAGE 5   

 242   1              
 243   1           dd=slave&0xfe;//写
 244   1            delay1(600);
 245   1           i2c_start_t();
 246   1          i2c_sendbyte_t(dd); 
 247   1            if(wait_ack_t())
 248   1                  {
 249   2                     i2c_stop_t();               
 250   2                   return(0);
 251   2                     }     
 252   1              i2c_sendbyte_t(address);
 253   1                if(wait_ack_t())
 254   1                  {
 255   2                     i2c_stop_t();              
 256   2                   return(0);
 257   2                     }          
 258   1            i2c_sendbyte_t(fb);
 259   1                if(wait_ack_t())
 260   1                   {
 261   2                     i2c_stop_t();             
 262   2                   return(0);
 263   2                     }        
 264   1                     i2c_stop_t();          
 265   1                  return(1);   
 266   1      }
 267          
 268          void write_a(unsigned char slave,unsigned char address,
 269                                      unsigned char fb[],unsigned char sun)
 270           {
 271   1      unsigned char i;
 272   1      for(i=0;i<4;i++)
 273   1      {
 274   2      if(i2c_write_a(slave,address,fb,sun))
 275   2           return;
 276   2      }
 277   1        #if(DEBUG)
 278   1         printf("多字节写入调谐器失败,器件地址=0x%2x,address=0x%2x\n",slave,address);
 279   1        #endif
 280   1       }
 281          void write_b(unsigned char slave, unsigned char address, unsigned char fb)
 282          {
 283   1      unsigned char i;
 284   1      for(i=0;i<4;i++)
 285   1      {
 286   2      if(i2c_write_b(slave,address,fb))
 287   2          {
 288   3           #if(DEBUG)     
 289   3       //  printf("单字节写入调谐器成功,器件地址=0x%2x,address=0x%2x,fb=0x%2x\n",slave,address,fb);
 290   3        #endif
 291   3           return;
 292   3           }
 293   2      }
 294   1        #if(DEBUG)
 295   1        printf("单字节写入调谐器失败,器件地址=0x%2x,address=0x%2x,fb=0x%2x\n",slave,address,fb);
 296   1        #endif
 297   1      }
 298          
 299          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    807    ----
C51 COMPILER V7.01  IIC_TUNE                                                               08/17/2003 17:24:35 PAGE 6   

   CONSTANT SIZE    =    113    ----
   XDATA SIZE       =   ----      26
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   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 + -