📄 iic.i
字号:
extern code unsigned char ColorTab[]; void BrightnessUp(void); void BrightnessDown(void); void LoadModeIndependentSettings(void); void LoadModeDependentSettings(void); void SaveModeDependentSettings(void); void ContrastUp(void); void ContrastDown(void); void ClockUp(void); void ClockDown(void); void PhaseUp(void); void PhaseDown(void); void HP_Up(void); void HP_Down(void); void VP_Up(void); void VP_Down(void); void Recall(void); void OSD_X_Up(void); void OSD_X_Down(void); void OSD_Y_Up(void); void OSD_Y_Down(void); void SharpnessUp(void); void SharpnessDown(void); void RGB_Up(void); void RGB_Down(void); void OSD_TimerUp(void); void OSD_TimerDown(void); void ColorTempUp(void); void ColorTempDown(void); void LanguageUp(void); void LanguageDown(void); void ResetEEPROM(void); void SaturationUp(void); void SaturationDown(void); void TintUp(void); void TintDown(void); void SharpnessDown(void); void CH_SystemUp(void); void CH_SystemDown(void); void InverterUp(void); void InverterDown(void); void SourceSelect(void); #line 9 "SRC\IIC.C" /0 #line 1 "SRC\SCALER.H" /0 extern code unsigned char TCON_Tab[]; extern code unsigned short H_ActiveTab[]; extern code unsigned short V_ActiveTab[]; extern code unsigned char PhaseTable[]; void InitScaler(void); void TCONInit(void); void UpdatePresetData(void); void SetADC_Phase(void); void SetADC_PLL(void); void SetScaler(void); void SetScalerAV(void); void ForceToBackground(unsigned char color); void SetDisplayNormal(void); void PowerSaving(void); void ScalerPowerDown(void); void ScalerPowerUp(void); void SetHP(void); void SetVP(void); void SetDPLL(unsigned long dclk); void SetSharpness(void); void SetContrast(void); void SetBrightness(void); void SetInverter(void); void LoadADC_Gain(void); void SetVolume(void); void SetStartDPLL(unsigned long dclk); void WritePageScaler(unsigned char addr1,unsigned char addr2,unsigned char *p); void SetScalerAV(void); #line 10 "SRC\IIC.C" /0 #line 1 "SRC\SAA7114.H" /0 void SAA7114Init(void); void WritePageSAA7114(unsigned char addr1,unsigned char addr2); void CheckColorSystem(void); void CheckVideo(void); void SetVideoBrightness(void); void SetVideoContrast(void); void SetVideoSaturation(void); void SetVideoTint(void); void SetVideoSharpness(void); void SetAV_System(void); #line 11 "SRC\IIC.C" /0 unsigned char Read24C16(unsigned short addr16) { unsigned char ch; unsigned short device,addr; addr = addr16 & 0x0ff; device = (addr16 >> 7) & 0x0e; device |= 0xa0; ch = ReadIIC_HW(device,addr); return ch; } void InitEEPROM(void) { unsigned short addr; for(addr=0; addr<0x280; addr=addr+16){ WritePage24C16(addr,addr,MCU_DataMap); } for(addr=0; addr<50; addr++){ Write24C16(0x290+addr*2,MCU_DataMap[0x104+addr*8]); Write24C16(0x291+addr*2,MCU_DataMap[0x105+addr*8]); } Write24C16(0xe8,0x55); Write24C16(0xe9,0xaa); Write24C16(0xea,0x00); Write24C16(0xeb,0x12); } void Write24C16(unsigned short k,unsigned char ch) { unsigned char device,addr; addr = (unsigned char)k; device = (unsigned char)((k>>7)&0x0e); device |= 0xa0; WriteIIC_HW(device,addr,ch); Sleep(12); } void WritePage24C16(unsigned short addr1,unsigned short addr2,unsigned char *p) { unsigned char i,ch; i = (unsigned char)((addr1 >>7 ) & 0x0e); i |= 0xa0; INTIIC1_FLG = 0xff; IIC1_DATA = i; IIC1_CLK = 0x20 | IIC_BaudRate; IIC1_CON = 0x00; MasterSendByte(addr1); for(i=0; i<16; i++){ ch = p[addr2 + i]; MasterSendByte(ch); } WaitTx(); IIC1_CLK = 0xA0|IIC_BaudRate; WaitStop(); Sleep(12); } void WriteWordIIC_HW(unsigned char device,unsigned char addr,unsigned short value) { INTIIC1_FLG = 0xff; IIC1_DATA = device; IIC1_CLK = 0x20 | IIC_BaudRate; IIC1_CON = 0x00; MasterSendByte(addr); MasterSendByte((unsigned char)value); MasterSendByte((unsigned char)(value >> 8)); WaitTx(); IIC1_CLK = 0xA0|IIC_BaudRate; WaitStop(); } void LoadDDCData(unsigned char ddcsw) { unsigned char *p,i; unsigned short device,addr; DDC_CTRL = 0; p = &DDCPtr; if(ddcsw == 0){ } else if(ddcsw == 1){ flag2 |= 0x80; addr = (unsigned char)0x300; device = (unsigned char)(0x300 >> 7) & 0x0e; if((flag3 & 0x04) != 0x00) printf("\n Load Analog EDID\r\n"); } else{ flag2 &= ~0x80; addr = (unsigned char)0x380; device = (unsigned char)(0x380 >> 7) & 0x0e; if((flag3 & 0x04) != 0x00) printf("Load Digital EDID\r\n"); } device |= 0xa0; INTIIC1_FLG = 0xff; IIC1_DATA = device; IIC1_CLK = 0x20 | IIC_BaudRate; MasterSendByte(addr); WaitTx(); IIC1_CLK = 0xA0|IIC_BaudRate; WaitStop(); IIC1_DATA = device+1; IIC1_CLK = 0x60 | IIC_BaudRate; WaitTx(); for(i=128; i>0; i--){ *p = MasterReadByte(i); p++; } WaitStop(); DDC_CTRL = (0x80 |0x40 | 0x01 | 0x02); DDC_CTRL = (0x80 | 0x10); } void SaveDDCData(unsigned char ddcsw) { unsigned char *p,i; LED_GrnOff(); LED_RedOn(); DDC_CTRL = (0x80 | 0x10 | 0x01); Timer3 = 50; while(Timer3 != 0){ if((INTIIC0_FLG & 0x01) != 0){ INTIIC0_FLG = 0x01; Timer3 = 50; } if((DDC_REG & 0x01) != 0){ DDC_CTRL = (0x80 | 0x10 | 0x01); Timer3 = 50; } } p = &DDCPtr; if(ddcsw == 0){ } else if(ddcsw == 1){ for(i=0; i<128; i=i+16){ do{ DDC_REG = 0x80; WritePage24C16(0x300+i,i,p); if((DDC_REG & 0x01) != 0){ return; } }while((DDC_REG & 0x80) == 0); } } else{ for(i=0; i<128; i=i+16){ do{ DDC_REG = 0x80; WritePage24C16(0x380+i,i,p); if((DDC_REG & 0x01) != 0){ return; } }while((DDC_REG & 0x80) == 0); } } LED_GrnOn(); LED_RedOff(); } void WriteIIC_HW(unsigned char device,unsigned char addr,unsigned char ch) { INTIIC1_FLG = 0xff; IIC1_DATA = device; IIC1_CLK = 0x20 | IIC_BaudRate; IIC1_CON = 0x00; MasterSendByte(addr); MasterSendByte(ch); WaitTx(); IIC1_CLK = 0xA0|IIC_BaudRate; WaitStop(); } void MasterSendByte(unsigned char i) { Timer1 = 100; while((INTIIC1_FLG & 0x08) == 0){ if(Timer1 == 0){ if((flag3 & 0x04) != 0x00){ printf("ACK Fail2\r\n"); } EA = 0; break; } } INTIIC1_FLG = 0x08; IIC1_DATA = i; } void WaitTx(void) { Timer1 = 100; while((INTIIC1_FLG & 0x08) == 0){ if(Timer1 == 0){ if((flag3 & 0x04) != 0x00){ printf("ACK Fail3\r\n"); } EA = 0; break; } } INTIIC1_FLG = 0x08; } void WriteIICV_HW(unsigned char device,unsigned char addr,unsigned char ch) { INTIIC1_FLG = 0xff; IIC1_DATA = device; IIC1_CLK = 0x20 | IIC_BaudRate; IIC1_CON = 0x00; MasterSendByte(addr); MasterSendByteV(ch); WaitTx(); IIC1_CLK = 0xA0|IIC_BaudRate; WaitStop(); } void MasterSendByteV(unsigned char i) { Timer1 = 100; while((INTIIC1_FLG & 0x08) == 0){ if(Timer1 == 0){ if((flag3 & 0x04) != 0x00){ printf("ACK Fail6\r\n"); } EA = 0; break; } } INTHV_FLG |= 0x40; Timer1 = 40; while(Timer1 != 0){ if((INTHV_FLG & 0x40) != 0) break; } INTIIC1_FLG = 0x08; IIC1_DATA = i; if(Timer1 == 0){ BackLightOff(); flag2 |= 0x01; H_SYNC_Temp = 0xffff; V_SYNC_Temp = 0xffff; if((flag3 & 0x04) != 0x00){ printf("Mode change\r\n"); } } } #line 340 "SRC\IIC.C" /1 #line 385 "SRC\IIC.C" /0 unsigned short ReadWordIIC_HW(unsigned char device,unsigned char addr) { unsigned char ch; unsigned short value; INTIIC1_FLG = 0xff; IIC1_DATA = device; IIC1_CLK = 0x20 | IIC_BaudRate; MasterSendByte(addr); WaitTx(); IIC1_CLK = 0xA0|IIC_BaudRate; WaitStop(); IIC1_DATA = device+1; IIC1_CLK = 0x60 | IIC_BaudRate; WaitTx(); ch = MasterReadByte(2); value = MasterReadByte(1); value <<= 8; value |= ch; WaitStop(); return(value); } unsigned char ReadIIC_HW(unsigned char device,unsigned char addr) { unsigned char value; INTIIC1_FLG = 0xff; IIC1_DATA = device; IIC1_CLK = 0x20 | IIC_BaudRate; MasterSendByte(addr); WaitTx(); IIC1_CLK = 0xA0|IIC_BaudRate; WaitStop(); IIC1_DATA = device+1; IIC1_CLK = 0x60 | IIC_BaudRate; WaitTx(); value = MasterReadByte(1); WaitStop(); return(value); } unsigned char MasterReadByte(unsigned char k) { unsigned char i; Timer1 = 100; while((INTIIC1_FLG & 0x04) == 0){ if(Timer1 == 0){ if((flag3 & 0x04) != 0x00){ printf("ACK Fail4\r\n"); } EA = 0; break; } } if(k == 1){ IIC1_CON = 0x02; } else{ IIC1_CON = 0x00; } INTIIC1_FLG = 0x04; i = IIC1_DATA; return i; } void WaitStop(void) { Timer1 = 100; while((IIC1_CON & 0x08) == 0){ if(Timer1 == 0){ if((flag3 & 0x04) != 0x00){ printf("Stop Fail\r\n"); } EA = 0; break; } } IIC1_CON = 0x00; } void CheckDevice(void) { DeviceFlag = 0; if((flag3 & 0x04) != 0x00){ printf("Video Decoder "); } VideoEnable(); Sleep(10); if(TestIIC_HW(0x42) == 0) DeviceFlag &= ~0x01; else DeviceFlag |= 0x01; VideoDisable(); } unsigned char TestIIC_HW(unsigned char device) { unsigned char value; INTIIC1_FLG = 0xff; IIC1_DATA = device + 1; IIC1_CLK = 0x60 | IIC_BaudRate; Timer1 = 100; while((INTIIC1_FLG & 0x08) == 0){ if(Timer1 == 0){ break; } } INTIIC1_FLG = 0x08; IIC1_CON = 0x02; Timer1 = 100; while((INTIIC1_FLG & 0x04) == 0){ if(Timer1 == 0) break; } if(Timer1 == 0){ IIC1_CLK = 0xA0|IIC_BaudRate; IIC1_CON = 0x00; value = 0; if((flag3 & 0x04) != 0x00){ printf("not install\r\n"); } } else{ value = IIC1_DATA; value |= 0x02; WaitStop(); if((flag3 & 0x04) != 0x00){ printf("install\r\n"); } } return(value); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -