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

📄 iic.lst

📁 车载DVD的主控MCU的源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 190          /*==========================================
 191          ==========================================*/
 192          unsigned char ReadIIC563(unsigned short addr)
 193          {
 194   1              Byte value;
 195   1              CheckRegPage(addr);
 196   1              IIC_Start();
 197   1              IIC_Tx(SCALER_ADDR);
 198   1              IIC_Tx(addr);
 199   1              IIC_ReStart();
 200   1              IIC_Tx(SCALER_ADDR+1);
 201   1              value = IIC_Rx(NACK);   //nack
 202   1              IIC_Stop();
 203   1              return value;
 204   1      }
 205          /*==========================================
 206          ==========================================*/
 207          unsigned short ReadWordIIC563(unsigned short addr)
 208          {
 209   1              Byte temp;
 210   1              Word value;
 211   1              CheckRegPage(addr);
 212   1              IIC_Start();
 213   1              IIC_Tx(SCALER_ADDR);
 214   1              IIC_Tx(addr);
 215   1              IIC_ReStart();
 216   1              IIC_Tx(SCALER_ADDR+1);
 217   1              temp = IIC_Rx(ACK);
 218   1              value = IIC_Rx(NACK);   //nack
 219   1              value <<= 8;
 220   1              value += temp;
 221   1              IIC_Stop();
 222   1              return value;
 223   1      }
 224          /*==========================================
 225          ==========================================*/
 226          void CheckRegPage(unsigned short addr)
 227          {
 228   1              Byte page;
 229   1              IIC_Start();
 230   1              IIC_Stop();
 231   1              page = (Byte)((addr/256) & 0x003);
 232   1              if(page != RegPage)
 233   1                      {
 234   2                      RegPage = page;
 235   2                      WriteIIC(SCALER_ADDR,0xff,RegPage);
 236   2                      }
 237   1      }
 238          /*
 239          void Write24C16(unsigned short k,unsigned char ch)
 240          {
C51 COMPILER V7.06   IIC                                                                   12/11/2007 11:28:42 PAGE 5   

 241          unsigned char device,addr;
 242                  addr = (unsigned char)k;
 243                  device = (unsigned char)((k>>7)&0x0e);
 244                  device |= EEPROM;
 245                  WriteIIC(device,addr,ch);
 246                  WaitEEprom();
 247          }
 248          
 249          void WaitEEprom(void)
 250          {
 251                  Byte i,ack;
 252                  for(i=0;i<100;i++)  //10ms 
 253                          {
 254                          IIC_Start();
 255                          ack = IIC_Tx(0xa0);     //polling ACKnowledge
 256                          IIC_Stop();
 257                          if(ack == ACK){
 258                                  break;}
 259                          CLRWDT = 0x55;
 260                          }
 261          }
 262          */
 263          void WriteIIC_Video(Byte Subaddr,Byte Data)
 264          {
 265   1              IIC_Start();
 266   1              IIC_Tx(0xba);
 267   1              IIC_Tx(Subaddr);
 268   1              IIC_Tx(Data);
 269   1              IIC_Stop();
 270   1      }
 271          /*==========================================
 272          ==========================================*/
 273          Byte ReadIIC_Video(Byte Subaddr)
 274          {
 275   1              Byte value;
 276   1              IIC_Start();
 277   1              IIC_Tx(0xba);
 278   1              IIC_Tx(Subaddr);
 279   1              IIC_ReStart();
 280   1              IIC_Tx(0xbb);
 281   1              value = IIC_Rx(NACK);   //nack
 282   1              IIC_Stop();
 283   1              return value;
 284   1      }
 285          void WriteWordIIC(unsigned char Device,unsigned short addr,unsigned short value)
 286          {
 287   1      //      CheckRegPage(addr);
 288   1              IIC_Start();
 289   1              IIC_Tx(Device);
 290   1              IIC_Tx((Byte)addr);
 291   1              IIC_Tx((Byte)value);
 292   1              IIC_Tx((Byte)(value>>8));       
 293   1              IIC_Stop();
 294   1      }
 295          unsigned short ReadWordIIC(unsigned char Device, unsigned short addr)
 296          {
 297   1              Byte temp;
 298   1              Word value;
 299   1      //      CheckRegPage(addr);
 300   1              IIC_Start();
 301   1              IIC_Tx(Device);
 302   1              IIC_Tx((Byte)addr);
C51 COMPILER V7.06   IIC                                                                   12/11/2007 11:28:42 PAGE 6   

 303   1              IIC_ReStart();
 304   1              IIC_Tx(Device+1);
 305   1              temp = IIC_Rx(ACK);
 306   1              value = IIC_Rx(NACK);   //nack
 307   1              value <<= 8;
 308   1              value += temp;
 309   1              IIC_Stop();
 310   1              return value;
 311   1      }
 312          
 313          //==========================================
 314          void WriteIIC_By(Byte Addr,Byte Subaddr,Byte Data)
 315          {
 316   1              IIC_Start();
 317   1              IIC_Tx(Addr);
 318   1              IIC_Tx(Subaddr);
 319   1              IIC_Tx(Data);
 320   1              IIC_Stop();
 321   1      }
 322          Byte ReadIIC_By(Byte Addr,Byte Subaddr)
 323          {
 324   1              Byte value;
 325   1              IIC_Start();
 326   1              IIC_Tx(Addr);
 327   1              IIC_Tx(Subaddr);
 328   1              IIC_ReStart();
 329   1              IIC_Tx(Addr+1);
 330   1              value = IIC_Rx(NACK);   //nack
 331   1              IIC_Stop();
 332   1              return value;
 333   1      }
 334          unsigned char Read24C16(unsigned short addr16)
 335          {
 336   1              Byte ch;
 337   1              Byte device,addr;
 338   1              addr = addr16 & 0x0ff;
 339   1              device = (addr16 >> 7) & 0x0e;
 340   1              device |= EEPROM;
 341   1              ch = ReadIIC_By(device,addr);
 342   1              return ch;
 343   1      }
 344          void Write24C16(unsigned short k,unsigned char ch)
 345          {
 346   1      unsigned char device,addr;
 347   1              addr = (unsigned char)k;
 348   1              device = (unsigned char)((k>>7)&0x0e);
 349   1              device |= EEPROM;
 350   1              WriteIIC(device,addr,ch);
 351   1      //      WaitEEprom();
 352   1      }
 353          void Write7318(Byte Addr,Byte Data)
 354          {
 355   1              IIC_Start();
 356   1              IIC_Tx(Addr);
 357   1      //      IIC_Tx(Subaddr);
 358   1              IIC_Tx(Data);
 359   1              IIC_Stop();
 360   1      }
 361          unsigned char Read24C08(unsigned char addr)
 362          {
 363   1              unsigned char ch;
 364   1              ch = ReadIIC_By(0xa8,addr);
C51 COMPILER V7.06   IIC                                                                   12/11/2007 11:28:42 PAGE 7   

 365   1              return ch;
 366   1      }
 367          void Write24C08(unsigned char addr,unsigned char ch)
 368          {
 369   1      
 370   1              WriteIIC(0xa8,addr,ch);
 371   1      //      WaitEEprom();
 372   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    795    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      15
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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