📄 saa7114.i
字号:
#line 789 "SRC\PANEL.H" /0 #line 791 "SRC\PANEL.H" /1 #line 854 "SRC\PANEL.H" /0 #line 856 "SRC\PANEL.H" /1 #line 919 "SRC\PANEL.H" /0 #line 921 "SRC\PANEL.H" /1 #line 984 "SRC\PANEL.H" /0 #line 986 "SRC\PANEL.H" /1 #line 1048 "SRC\PANEL.H" /0 #line 1050 "SRC\PANEL.H" /1 #line 1112 "SRC\PANEL.H" /0 #line 1119 "SRC\PANEL.H" /1 #line 1182 "SRC\PANEL.H" /0 #line 1184 "SRC\PANEL.H" /1 #line 1247 "SRC\PANEL.H" /0 #line 1249 "SRC\PANEL.H" /1 #line 1312 "SRC\PANEL.H" /0 #line 1314 "SRC\PANEL.H" /1 #line 1377 "SRC\PANEL.H" /0 #line 1379 "SRC\PANEL.H" /1 #line 1442 "SRC\PANEL.H" /0 #line 1444 "SRC\PANEL.H" /1 #line 1507 "SRC\PANEL.H" /0 #line 1509 "SRC\PANEL.H" /1 #line 1566 "SRC\PANEL.H" /0 #line 1568 "SRC\PANEL.H" /1 #line 1631 "SRC\PANEL.H" /0 #line 1633 "SRC\PANEL.H" /1 #line 1695 "SRC\PANEL.H" /0 #line 1697 "SRC\PANEL.H" /1 #line 1760 "SRC\PANEL.H" /0 #line 1827 "SRC\PANEL.H" /1 #line 1890 "SRC\PANEL.H" /0 #line 10 "SRC\SAA7114.C" /0 #line 1 "SRC\SRGB.H" /0 int sine(unsigned char alpha); int cosine(unsigned char alpha); void product(int *first, int * second, int *result); void sRGB(void); #line 11 "SRC\SAA7114.C" /0 unsigned char code NTSC_AV[]={ 0x00,0x08,0xc5,0x10,0x90,0x90,0xeb,0xe0, 0xb8,0x40,0x80,0x44,0x40,0x00,0x89,0x2a, 0x0e,0x00,0x00,0x00,0x00,0x11,0xfe,0x40, 0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xbc,0xdf,0x02,0x00,0xcd,0xcc,0x3a,0x00, 0x03,0x20,0x03,0x00,0x00,0x00,0x00,0x00, 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x5f,0xff,0xff,0xff, 0x00,0x47,0x06,0x83,0x00,0x3e,0x00,0x00, 0x00,0x05,0xa0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x12,0x00,0x00,0x01,0x01,0x04,0x45,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x08,0x09,0x40,0x10,0x00,0xd0,0x02, 0x0a,0x00,0xf0,0x00,0xd0,0x02,0xf0,0x00, 0x01,0x00,0x00,0x00,0x80,0x40,0x40,0x00, 0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00, 0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x08,0x10,0x81,0x10,0x00,0xd0,0x02, 0x0a,0x00,0x20,0x01,0xd0,0x02,0x20,0x01, 0x01,0x00,0x00,0x00,0x80,0x40,0x40,0x00, 0x00,0x04,0x00,0x00,0x00,0x02,0x00,0x00, 0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; void SAA7114Init(void) { unsigned char i; VideoEnable(); ScalerPowerUp(); Sleep(10); flag1 &= ~0x02; ForceToBackground(0); for(i=0; i<0xf0; i=i+16){ WritePageSAA7114(i,i); } WriteIIC_HW(0x42,0x88,0xe0); switch(PowerStatus){ case 0x81: WriteIIC_HW(0x42,0x02,0xc5); WriteIIC_HW(0x42,0x09,0x40); WriteIIC_HW(0x42,0x14,0x22); break; case 0x82: WriteIIC_HW(0x42,0x02,0xc6); WriteIIC_HW(0x42,0x09,0xc0); WriteIIC_HW(0x42,0x14,0x12); break; case 0x83: WriteIIC_HW(0x42,0x02,0xc4); WriteIIC_HW(0x42,0x09,0x40); WriteIIC_HW(0x42,0x14,0x22); break; } WriteIIC_HW(0xB0,0x12,0x03); WriteIIC_HW(0xB0,0x13,0x33); WriteIIC_HW(0xB0,0x00,0x32); WriteIIC_HW(0xB0,0xE8,0x00); Brightness = 50; SetBrightness(); Contrast = 50; Saturation = 50; Tint = 50; R_Gain = 100; G_Gain = 100; B_Gain = 100; sRGB(); Brightness = Read24C16(0xd6); Contrast = Read24C16(0xd7); Saturation = Read24C16(0xd8); Tint = Read24C16(0xd9); Sharpness = Read24C16(0xda); SetVideoBrightness(); SetVideoContrast(); SetVideoSaturation(); SetVideoTint(); SetVideoSharpness(); ColorStatus = 0; flag2 |= 0x07; BackLightOn(); SetVolume(); } void CheckVideo(void) { unsigned char value; value = ReadIIC_HW(0x42,0x1f); if(((value & 0x41) != 0x01) && ((flag2 & 0x02) == 0)){ flag2 &= ~0x01; flag2 |= 0x02; flag1 &= ~0x02; BackLightOff(); ForceToBackground(1); MuteTimer = 255; Timer3 = 100; if(PowerStatus == 0x83){ AUDIO_MUTE(); } if((flag3 & 0x04) != 0x00){ printf("No Video\r\n"); } } else if(((value & 0x40) == 0) && ((flag2 & 0x02) != 0)){ flag2 &= ~0x01; flag2 &= ~0x02; SetAV_System(); Timer3 = 100; if(PowerStatus == 0x83){ if((flag3 & 0x10) == 0) AUDIO_On(); else AUDIO_MUTE(); } if((flag3 & 0x04) != 0x00){ printf("Video again\r\n"); } } else if(((value & 0x20) == 0) && ((flag2 & 0x06) == 0x04)){ flag2 &= ~0x01; flag2 &= ~0x04; SetAV_System(); Timer3 = 100; } else if(((value & 0x20) != 0) && ((flag2 & 0x06) == 0x00)){ flag2 &= ~0x01; flag2 |= 0x04; SetAV_System(); Timer3 = 100; } else if(((value & 0x41) == 0x00)&&((flag2 & 0x02) == 0)){ CheckColorSystem(); } } void SetAV_System(void) { flag1 &= ~0x20; CheckColorSystem(); SetScalerAV(); SetDisplayNormal(); } void CheckColorSystem(void) { unsigned char code tab1[]={ 0x81,0x91,0xa1,0xb1,0xc1,0xd0 }; unsigned char code tab2[]={ 0x2a,0x2a,0x2a,0x2a,0x2a,0x80 }; unsigned char i,value,k; if((flag1 & 0x20) != 0) return; i = 0; WriteIIC_HW(0x42,0x0e,tab1[i]); WriteIIC_HW(0x42,0x0f,tab2[i]); k = 3; while(k != 0){ k--; value = ReadIIC_HW(0x42,0x1f); if((value & 0x41) != 0x01){ for(i=0; i<6; i++){ WriteIIC_HW(0x42,0x0e,tab1[i]); WriteIIC_HW(0x42,0x0f,tab2[i]); Sleep(100); value = ReadIIC_HW(0x42,0x1f); if((value & 0x41) == 0x01){ ColorStatus = i; break; } } } } if(i == 0x06){ i = ColorStatus; WriteIIC_HW(0x42,0x0e,tab1[i]); WriteIIC_HW(0x42,0x0f,tab2[i]); flag1 |= 0x20; if((flag3 & 0x04) != 0x00){ printf("Color system = B/W\r\n"); } } else{ flag1 &= ~0x20; if((flag3 & 0x04) != 0x00){ printf("Color system = %x\r\n",(unsigned short)i); } } WriteIIC_HW(0x42,0x0e,tab1[i] & ~0x80); WriteIIC_HW(0x42,0x0e,tab1[i]); i = i * 2; if(((value & 0x20) == 0) && ((flag2 & 0x06) == 0x04)){ flag2 &= ~0x04; } if(((value & 0x20) != 0) && ((flag2 & 0x06) == 0x00)){ flag2 |= 0x04; } if((flag2 & 0x04) != 0) i++; switch(i){ case 0: case 3: case 4: case 7: value = ReadIIC_HW(0x42,0x09); value &= 0x80; value |= 0x40; WriteIIC_HW(0x42,0x09,value); value = ReadIIC_HW(0x42,0x0e); value &= ~0x08; WriteIIC_HW(0x42,0x0e,value); WriteIIC_HW(0x42,0x0f,0x2a); WriteIIC_HW(0x42,0x10,0x06); break; case 1: case 2: case 5: case 6: case 9: value = ReadIIC_HW(0x42,0x09); value &= 0x80; value |= 0x40; WriteIIC_HW(0x42,0x09,value); value = ReadIIC_HW(0x42,0x0e); value |= 0x08; WriteIIC_HW(0x42,0x0e,value); WriteIIC_HW(0x42,0x0f,0x2a); WriteIIC_HW(0x42,0x10,0x0e); break; case 10: value = ReadIIC_HW(0x42,0x09); value &= 0x80; value |= 0x1b; WriteIIC_HW(0x42,0x09,value); WriteIIC_HW(0x42,0x0f,0x80); WriteIIC_HW(0x42,0x10,0x00); break; } } void WritePageSAA7114(unsigned char addr1,unsigned char addr2) { unsigned char i,ch; INTIIC1_FLG = 0xff; IIC1_DATA = 0x42; IIC1_CLK = 0x20 | IIC_BaudRate; IIC1_CON = 0x00; MasterSendByte(addr1); for(i=0; i<16; i++){ ch = NTSC_AV[addr2 + i]; MasterSendByte(ch); } WaitTx(); IIC1_CLK = 0xA0|IIC_BaudRate; WaitStop(); } void SetVideoBrightness(void) { unsigned char value; value = Brightness * 2 + 28; WriteIIC_HW(0x42,0x0a,value); if((flag3 & 0x04) != 0x00){ printf("Brightness of SAA7114 = %x\r\n",(unsigned short)value); } } void SetVideoContrast(void) { unsigned char value; value = Contrast + 14; WriteIIC_HW(0x42,0x0b,value); if((flag3 & 0x04) != 0x00){ printf("Contrast of SAA7114 = %x\r\n",(unsigned short)value); } } void SetVideoSaturation(void) { unsigned char value; value = Saturation + 14; WriteIIC_HW(0x42,0x0c,value); if((flag3 & 0x04) != 0x00){ printf("Saturation of SAA7114 = %x\r\n",(unsigned short)value); } } void SetVideoTint(void) { unsigned char value; value = (((unsigned short)Tint * 255 + 50) / 100) - 128; WriteIIC_HW(0x42,0x0d,value); if((flag3 & 0x04) != 0x00){ printf("Tint of SAA7114 = %x\r\n",(unsigned short)value); } } void SetVideoSharpness(void) { code unsigned char SharpnessTab[]={ 0x0b,0x0a,0x09,0x08,0x00,0x06,0x04,0x02 }; unsigned char value; value = ReadIIC_HW(0x42,0x09) & 0xf0; value |= SharpnessTab[Sharpness]; WriteIIC_HW(0x42,0x09,value); if((flag3 & 0x04) != 0x00){ printf("Sharpness of SAA7114 = %x\r\n",(unsigned short)value); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -