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

📄 twowire.lst

📁 车载显示屏
💻 LST
📖 第 1 页 / 共 2 页
字号:
              				
              				        Set_SCL_High;
              				    }
              				
              				    Set_SCL_Low;
              				    Set_SDA_High;                /* release data line for acknowledge */
              				    Set_SCL_High;                /* Send a clock for Acknowledge */
              				
              				    if(SDA_High) cAcknowledge = 1; /* No Acknowledge */
              				    Set_SCL_Low;                   /* Finish Acknoledge */
              				
              				    return(cAcknowledge);
              				}							
              				
              				//--------------------------------------------------
              				// Read_Byte
              				//    Read a byte from master with a acknowledge bit
C51 COMPILER V6.12  TWOWIRE                                                                09/20/2007 22:17:29 PAGE 5   

              				//--------------------------------------------------
              				uCHAR Read_Byte(void)
              				{
              				    uCHAR ix, j;
              				    uCHAR cRetval;
              				    uCHAR cTWtrytime=0;
              				
              				//    cRetval = 0;
              				    Set_SDA_High;
              				
              				    for(ix = 0; ix < 8; ix++)
              				    {
              				        Set_SCL_Low;
              				        for(j = 0; j < TWD_SHORT_TIME; j++)
              				        { };
              				
              				        Set_SCL_High;
              				        while(SCL_Low)
              				        { };
              				
              				        for(j = 0; j < TWD_SHORT_TIME; j++)
              				        { };
              				
              						cRetval<<=1;
              						if(SDA_High) cRetval++;
              					}
              				
              				    for(j = 0; j < TWD_SHORT_TIME; j++)
              				    { };
              				
              				    Set_SCL_Low;
              				    for(j = 0; j < TWD_SHORT_TIME; j++)
              				    { };
              				
              				    return cRetval;
              				}
              				
              				
              				#endif
 280          				
 281          				
 282          				//--------------------------------------------------
 283          				// Read Byte to Device
 284          				//--------------------------------------------------
 285          				uCHAR I2CReadByte(uCHAR cDevAddr, uCHAR cReg)
 286          				{
 287   1      				    uCHAR cResult = 0;
 288   1      				
 289   1      				
 290   1      				    /* write reg offset */
 291   1      				    StartCondition();
 292   1      				    if(Send_Byte(cDevAddr))
 293   1      						return 0;  // Write address
 294   1      				    if(Send_Byte(cReg))
 295   1      						return 0;
 296   1      				
 297   1      				    /* read data */
 298   1      				    StartCondition();
 299   1      				    if (Send_Byte(cDevAddr | 0x01)) // Read address
 300   1      						return 0;
 301   1      				    cResult = Read_Byte(1);
 302   1      				
C51 COMPILER V6.12  TWOWIRE                                                                09/20/2007 22:17:29 PAGE 6   

 303   1      				    StopCondition();
 304   1      				   		return cResult;
 305   1      				}
 306          				//---------------------------------------------------
 307          
 308          				//--------------------------------------------------
 309          				// Write Byte to Device
 310          				//--------------------------------------------------
 311          				
 312          				uCHAR I2CWriteByte(uCHAR cDevAddr, uCHAR cReg, uCHAR cData)
 313          				{
 314   1      				
 315   1      				
 316   1      				    /* start condition */
 317   1      				    StartCondition();
 318   1      				  	cDevAddr &= 0xFE;   // Force WRITE address
 319   1      				    /* send device ID and write data */
 320   1      				    if(!Send_Byte(cDevAddr))
 321   1      				    {
 322   2      				        if(!Send_Byte(cReg))
 323   2      				        {
 324   3      				            if(!Send_Byte(cData))
 325   3      				            {
 326   4      				                StopCondition();
 327   4      				                return(0);      /* success */
 328   4      				            }
 329   3      				        }
 330   2      				    }
 331   1      				    StopCondition();
 332   1      				    return(1);
 333   1      				}
 334          
 335          				//--------------------------------------------------
 336          				// 041901, Added for TWD Burst Write
 337          				// 1. PT8655X_Wr_Burst_A    (Start + Slave_ID + Address)
 338          				// 2. PT8655X_Wr_Burst_D    (Data)
 339          				// 3. PT8655X_Wr_Burst_P    (stop)
 340          				//--------------------------------------------------
 341          
 342          				uCHAR twdWr_Burst_A(uCHAR cReg)
 343          				{
 344   1      				    StartCondition();
 345   1      				    if(!Send_Byte(TW101))
 346   1      				    {
 347   2      				        if(!Send_Byte(cReg))
 348   2      				        {
 349   3      				            return(0);               //
 350   3      				        }
 351   2      				    }
 352   1      				    return(1);                  //
 353   1      				}
 354          
 355          				void twdWr_Burst_D(uCHAR cData)
 356          				{
 357   1      				    uCHAR ix;
 358   1      				//uCHAR cAcknowledge;
 359   1      				//    uCHAR cTWtrytime=0;
 360   1      				//    cAcknowledge = 0;
 361   1      				
 362   1      				    for(ix = 0; ix < 8; ix++)
 363   1      				    {
 364   2      				        Set_SCL2Low;
C51 COMPILER V6.12  TWOWIRE                                                                09/20/2007 22:17:29 PAGE 7   

 365   2      				        if(cData&0x80)Set_SDA2High;
 366   2      						else Set_SDA2Low;
 367   2      						cData<<=1;
 368   2      				        Set_SCL2High;
 369   2      				    }
 370   1      				    Set_SCL2Low;
 371   1      				    Set_SDA2High;                // release data line for acknowledge 
 372   1      				    Set_SCL2High;                // Send a clock for Acknowledge 
 373   1      				//    if(SDA_High) cAcknowledge = 1; // No Acknowledge 
 374   1      				    Set_SCL2Low;                   // Finish Acknoledge 
 375   1      				
 376   1      				//    return(cAcknowledge);
 377   1      				
 378   1      				}
 379          	//			#endif				
 380          				void twdWr_Burst_P(void)
 381          				{
 382   1      				    StopCondition();
 383   1      				}
 384          	/*			
 385          				//twdWriteTable() is used for burst write for
 386          				//any I2C standar device
 387          				#if VIDEO_AVAILABLE
 388          				#ifdef VIDEO_SAA7114
 389          				#define EOT	-1
 390          				BOOL twdWriteTable(uCHAR cDevAddr, char *pString)
 391          				{
 392          					uCHAR  cReg=0;
 393          				  	uCHAR  cNum=0;
 394          				  	while(*pString != EOT)
 395          				  	{
 396          						cReg = *pString++;
 397          						cNum = *pString++;
 398          				    	if(!I2CWriteBytes(cDevAddr, cReg, cNum, pString))
 399          							break;
 400          						else
 401          							pString += cNum;
 402          					}
 403          				}
 404          				#endif
 405          				#endif
 406          	*/		
 407          				//--------------------------------------------------
 408          				// Read Multiple Bytes to Device
 409          				//--------------------------------------------------
 410          	/*			
 411          				void twdDelay(uWORD wLoops)
 412          				{
 413          					uWORD wTemp;
 414          				
 415          				    while (wLoops--) {
 416          					    wTemp = 1000/6;	// one loop below takes about 11 us
 417          				        while (wTemp--);
 418          				    }
 419          				}
 420          				
 421          			*/	
 422          				void twdDelay1(uWORD wLoops)
 423          				{
 424   1      					uWORD wTemp;
 425   1      				
 426   1      				    while (wLoops--) {
C51 COMPILER V6.12  TWOWIRE                                                                09/20/2007 22:17:29 PAGE 8   

 427   2      					    wTemp = 1000/6;	// one loop below takes about 11 us
 428   2      				        while (wTemp--);
 429   2      				    }					
 430   1      				}
 431          				
 432          				// OSD config register Write
 433          				void OSDCfgWr(uCHAR index,uCHAR dat)		///OSD_CFG_INDEX=0xa0;
 434          				{
 435   1      				 I2CWriteByte(TW101,OSD_CFG_INDEX,index);
 436   1      				 I2CWriteByte(TW101,OSD_CFG_DATA,dat);
 437   1      				}
 438          
 439          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    530    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       3
   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 + -