📄 twowire.lst
字号:
328 1 StopCondition();
329 1 return(1);
330 1 }
331 //--------------------------------------------------
332 // 041901, Added for TWD Burst Write
333 // 1. PT8655X_Wr_Burst_A (Start + Slave_ID + Address)
334 // 2. PT8655X_Wr_Burst_D (Data)
335 // 3. PT8655X_Wr_Burst_P (stop)
336 //--------------------------------------------------
337 uCHAR twdWr_Burst_A(uCHAR cReg)
338 {
339 1 StartCondition();
340 1 if(!Send_Byte(TW101))
341 1 {
342 2 if(!Send_Byte(cReg))
343 2 {
344 3 return(0); //
345 3 }
346 2 }
347 1 return(1); //
348 1 }
349
350 #ifdef TW100K
void twdWr_Burst_D(uCHAR cData)
{
uCHAR ix;
for(ix = 0; ix < 8; ix++)
{
Set_SCL_Low;
if(cData&0x80)Set_SDA_High;
else Set_SDA_Low;
cData<<=1;
Set_SCL_High;
}
Set_SCL_Low;
Set_SDA_High; /* release data line for acknowledge */
Set_SCL_High; /* Send a clock for Acknowledge */
C51 COMPILER V7.06 TWOWIRE 06/16/2005 10:05:38 PAGE 7
// if(SDA_High) cAcknowledge = 1; /* No Acknowledge */
Set_SCL_Low; /* Finish Acknoledge */
// return(cAcknowledge);
}
#else
374 void twdWr_Burst_D(uCHAR cData)
375 {
376 1 uCHAR ix;
377 1 //uCHAR cAcknowledge;
378 1 // uCHAR cTWtrytime=0;
379 1 // cAcknowledge = 0;
380 1
381 1 for(ix = 0; ix < 8; ix++)
382 1 {
383 2 Set_SCL2Low;
384 2 if(cData&0x80)Set_SDA2High;
385 2 else Set_SDA2Low;
386 2 cData<<=1;
387 2 Set_SCL2High;
388 2 }
389 1 Set_SCL2Low;
390 1 Set_SDA2High; /* release data line for acknowledge */
391 1 Set_SCL2High; /* Send a clock for Acknowledge */
392 1 // if(SDA_High) cAcknowledge = 1; /* No Acknowledge */
393 1 Set_SCL2Low; /* Finish Acknoledge */
394 1
395 1 // return(cAcknowledge);
396 1
397 1 }
398 #endif
399
400 void twdWr_Burst_P(void)
401 {
402 1 StopCondition();
403 1 }
404
405 //twdWriteTable() is used for burst write for
406 //any I2C standar device
407 #if VIDEO_AVAILABLE
408 #ifdef VIDEO_SAA7114
#define EOT -1
BOOL twdWriteTable(uCHAR cDevAddr, char *pString)
{
uCHAR cReg=0;
uCHAR cNum=0;
while(*pString != EOT)
{
cReg = *pString++;
cNum = *pString++;
if(!I2CWriteBytes(cDevAddr, cReg, cNum, pString))
break;
else
pString += cNum;
}
}
#endif
425 #endif
426 //--------------------------------------------------
427 // Write Multiple Bytes to Device
C51 COMPILER V7.06 TWOWIRE 06/16/2005 10:05:38 PAGE 8
428 //--------------------------------------------------
429
430
431 #if 0
BOOL I2CWriteBytes(uCHAR cDevAddr, uCHAR cReg, uCHAR cNum, char *cData)
{
/* start condition */
StartCondition();
/* send device ID and write data */
if(!Send_Byte(cDevAddr))
{
if(!Send_Byte(cReg))
{
while(cNum--)
{
if(Send_Byte(*cData++)) //If false: release line and return
{
StopCondition();
return(0); /* unsuccess */
}
}
StopCondition();
return(1);
}
}
StopCondition();
return(0); /* fail */
}
#endif
458 //--------------------------------------------------
459 // Read Multiple Bytes to Device
460 //--------------------------------------------------
461 BOOL I2CReadBytes(uCHAR cDevAddr, uCHAR cReg, uCHAR *pString, uCHAR cNum)
462 {
463 1 /* write reg offset */
464 1 StartCondition();
465 1 if(Send_Byte(cDevAddr))
466 1 return 0; // Write address
467 1 if(Send_Byte(cReg))
468 1 return 0;
469 1
470 1 /* read data */
471 1 StartCondition();
472 1 if (Send_Byte(cDevAddr | 0x01)) // Read address
473 1 return 0;
474 1 while(cNum)
475 1 {
476 2 *pString++ = Read_Byte(cNum);
477 2 cNum--;
478 2 }
479 1
480 1 StopCondition();
481 1 return 1;
482 1 }
483
484
485 void twdDelay(uWORD wLoops)
486 {
487 1 uWORD wTemp;
488 1
489 1 while (wLoops--) {
C51 COMPILER V7.06 TWOWIRE 06/16/2005 10:05:38 PAGE 9
490 2 wTemp = 1000/6; // one loop below takes about 11 us
491 2 while (wTemp--);
492 2 }
493 1 }
494
495
496 // OSD config register Write
497 void OSDCfgWr(uCHAR index,uCHAR dat)
498 {
499 1 I2CWriteByte(TW101,OSD_CFG_INDEX,index);
500 1 I2CWriteByte(TW101,OSD_CFG_DATA,dat);
501 1 }
502
503 #ifdef TV
uCHAR TunerReadByte(uCHAR cDevAddr) //uCHAR cReg)
{
uCHAR cResult = 0;
#ifdef TWO_TW_BUS
gbTwBusSel=0;
#endif
/* read data */
StartCondition();
if (Send_Byte(cDevAddr | 0x01)) // Read address
return 0;
cResult = Read_Byte(1);
StopCondition();
return cResult;
}
//--------------------------------------------------
// Write Byte to Device
//--------------------------------------------------
#ifdef PAL
#define STEPCODE 0xC8 //Step:50KHz
#endif
#ifdef NTSC
#define STEPCODE 0xCE //Step:62.5KHz
#endif
uCHAR TunerWriteByte(uCHAR cDevAddr, uCHAR cDecH, uCHAR cDecL, uCHAR cData)
{
cDevAddr &= 0xFE; // Force WRITE address
// start condition
StartCondition();
// send device ID and write data
if(!Send_Byte(cDevAddr))
{
if(!Send_Byte(cDecH))
{
if(!Send_Byte(cDecL))
{
if(!Send_Byte(STEPCODE))
{
if(!Send_Byte(cData))
{
StopCondition();
return(0); // success
}
}
C51 COMPILER V7.06 TWOWIRE 06/16/2005 10:05:38 PAGE 10
}
}
}
StopCondition();
return(1); // fail
}
#endif
559
560
C51 COMPILER V7.06 TWOWIRE 06/16/2005 10:05:38 PAGE 11
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
isrcSVIDEO . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
ScaleEnd . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
ROMDATA. . . . . . . . . . . . . . . . TYPEDEF CODE INT ----- 2
VIDEOINPUT . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
_twdWr_Burst_A . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cReg . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
_twdWr_Burst_D . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cData. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
ix . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
sCHAR. . . . . . . . . . . . . . . . . TYPEDEF ----- CHAR ----- 1
uCHAR. . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
BOOL16 . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
sROM8. . . . . . . . . . . . . . . . . TYPEDEF CODE CHAR ----- 1
uROM8. . . . . . . . . . . . . . . . . TYPEDEF CODE U_CHAR ----- 1
ScaleFULL. . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
_OSDCfgWr. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
index. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
dat. . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
_twdDelay. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
wLoops . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
wTemp. . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
isrcCVIDEO2. . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
isrcCVIDEO3. . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
isrcCVIDEO4. . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
_I2CReadBytes. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cDevAddr . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
cReg . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
pString. . . . . . . . . . . . . . . AUTO DATA PTR 0002H 3
cNum . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0005H 1
BOOL . . . . . . . . . . . . . . . . . TYPEDEF DATA INT ----- 2
sWORD. . . . . . . . . . . . . . . . . TYPEDEF ----- INT ----- 2
Scale4_3 . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
VOID . . . . . . . . . . . . . . . . . TYPEDEF ----- VOID ----- -----
uWORD. . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
BITS . . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
_I2CReadByte . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cDevAddr . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
cReg . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
cResult. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0001H 1
BYTE . . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
WORD . . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
StartCondition . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ix . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
cTWtrytime . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
twdWr_Burst_P. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_I2CWriteByte. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cDevAddr . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
cReg . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0001H 1
cData. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
sROM16 . . . . . . . . . . . . . . . . TYPEDEF CODE INT ----- 2
uROM16 . . . . . . . . . . . . . . . . TYPEDEF CODE U_INT ----- 2
isrc_end . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
_Read_Byte . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
C51 COMPILER V7.06 TWOWIRE 06/16/2005 10:05:38 PAGE 12
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
cNum . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
ix . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
cRetval. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0001H 1
StopCondition. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ix . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
cTWtrytime . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
SDA. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0097H 1
isrcTV . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
_Send_Byte . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cData. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
ix . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
cAcknowledge . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
cTWtrytime . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
SCL. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0096H 1
Scale16_9. . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1
Scale_Type . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
sDWORD . . . . . . . . . . . . . . . . TYPEDEF ----- LONG ----- 4
uDWORD . . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 615 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
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 + -