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

📄 i2ctest.lst

📁 电子时钟
💻 LST
📖 第 1 页 / 共 2 页
字号:
 154                                                                                                          
 155                                                  //**********Send n bety ,n<16,page[0-7],add[0-255].error return 0********//
 156                                                  bit I2C_Send_Nbyte(unsigned char page,unsigned char add,unsigned char *buffer,unsigned char n)
 157                                                  {
 158   1                                                      unsigned char i;
 159   1                                                              
 160   1                                                      I2C_start();                    //send start//                  
 161   1                                                      
 162   1                                                      I2C_Send_byte(0xa0|(page<<1));  //send device address//
 163   1                                                      if(I2C_Cack()==1)
 164   1                                                      {
 165   2                                                              I2C_stop();
 166   2                                                              return 0;
 167   2                                                      }
 168   1                                                      
 169   1                                                      I2C_Send_byte(add);             //send data address//
 170   1                                                      if(I2C_Cack()==1)
 171   1                                                      {
 172   2                                                              I2C_stop();
 173   2                                                              return 0;
 174   2                                                      }
 175   1                                                      
 176   1                                                      for(i=0;i<n;i++)                //send data//
 177   1                                                      {
 178   2                                                              I2C_Send_byte(buffer[i]);
 179   2                                                              if(I2C_Cack()==1)
C51 COMPILER V7.02a   I2CTEST                                                              09/30/2004 14:29:31 PAGE 4   

 180   2                                                              {
 181   3                                                                      I2C_stop();
 182   3                                                                      return 0;
 183   3                                                              }
 184   2                                                      }
 185   1                                                      
 186   1                                                      I2C_stop();                     //send stop//
 187   1                                                      return 1;
 188   1                                              }                       
 189                                                          
 190                                                  
 191                                                  //***********receive n byte n<16,page[0-7],add[0-255],error return 0*********//
 192                                                  bit I2C_Receive_Nbyte(unsigned char page,unsigned char add,unsigned char *buffer,unsigned char n)
 193                                                  {
 194   1                                                      unsigned char i;
 195   1                                                      
 196   1                                                      I2C_start();                    //send start//                                          
 197   1                                                      
 198   1                                                      I2C_Send_byte(0xa0|(page<<1));          //send device address//
 199   1                                                      if(I2C_Cack()==1)
 200   1                                                      {
 201   2                                                              I2C_stop();
 202   2                                                              return 0;
 203   2                                                      }
 204   1                                                      
 205   1                                                      I2C_Send_byte(add);             //send data address//
 206   1                                                      if(I2C_Cack()==1)
 207   1                                                      {
 208   2                                                              I2C_stop();
 209   2                                                              return 0;
 210   2                                                      }
 211   1                                                      
 212   1                                                      I2C_stop();                     //send stop//
 213   1                                                      
 214   1                                                      I2C_start();                    //send start//
 215   1                                                      
 216   1                                                      I2C_Send_byte(0xa1|(page<<1));          //send device address read//
 217   1                                                      if(I2C_Cack()==1)
 218   1                                                      {
 219   2                                                              I2C_stop();
 220   2                                                              return 0;
 221   2                                                      }
 222   1              
 223   1                                                      for(i=0;i<n;i++)                //send data//
 224   1                                                      {
 225   2                                                              buffer[i]=I2C_Receive_byte();
 226   2                                                              if(i!=n)
 227   2                                                              {
 228   3                                                                      I2C_ack();
 229   3                                                              }
 230   2                                                              else
 231   2                                                              {
 232   3                                                                      I2C_nack();
 233   3                                                              }
 234   2                                                      }
 235   1                                                              
 236   1                                                      I2C_stop();                     //send stop//
 237   1                                                                              
 238   1                                                      return 1;
 239   1                                              }               
 240                                                                          
 241                                                  
C51 COMPILER V7.02a   I2CTEST                                                              09/30/2004 14:29:31 PAGE 5   

 242                                                  //********main************//
 243                                                  void main(void)
 244                                                  {       
 245   1                                                      unsigned char buffer[8],i;
 246   1                                                      
 247   1                                                      SCON = 0x52;
 248   1                                                      TMOD=0x29;      
 249   1                                                      TH1=0xfd;
 250   1                                                      TL1=0xfd;                                       //** 9600 baud **//
 251   1                                                      TR1=1;                                          //** start timer 1 **//
 252   1                                                      TI=1;
 253   1                                                      EA=1;   
 254   1                                                      
 255   1                                              /*      I2C_start();
 256   1                                                      I2C_Send_byte(0x64);
 257   1                                                      if(I2C_Cack()==1)
 258   1                                                      {
 259   1                                                              I2C_stop();
 260   1                                                      }
 261   1                                                      I2C_Send_byte(0x00);
 262   1                                                      if(I2C_Cack()==1)
 263   1                                                      {
 264   1                                                              I2C_stop();
 265   1                                                      }
 266   1                                                      I2C_stop()*/;
 267   1                                      while(1)
 268   1                                      {               
 269   2                                                      I2C_start();
 270   2                                                      I2C_Send_byte(0x65);
 271   2                                                      if(I2C_Cack()==1)
 272   2                                                      {
 273   3                                                              I2C_stop();
 274   3                                                      }
 275   2                                                      
 276   2                                                      for(i=0;i<8;i++)
 277   2                                                      {
 278   3                                                              buffer[i]=I2C_Receive_byte();
 279   3                                                              if(i!=8)
 280   3                                                              { 
 281   4                                                                      I2C_ack();
 282   4                                                              }
 283   3                                                              else
 284   3                                                              {
 285   4                                                                      I2C_nack();
 286   4                                                              }
 287   3                                                      }
 288   2                                                      
 289   2                                                      I2C_stop();
 290   2                                                      
 291   2                                                      for(i=0;i<8;i++)
 292   2                                                      {
 293   3                                                              printf(",%x,\n",(int)buffer[i]);
 294   3                                                      }
 295   2                                                      delay_ms(2000);
 296   2                                              }
 297   1                                                      while(1);
 298   1                                              }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    538    ----
   CONSTANT SIZE    =      6    ----
C51 COMPILER V7.02a   I2CTEST                                                              09/30/2004 14:29:31 PAGE 6   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      23
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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