📄 saa7114.lst
字号:
217 4 AUDIO_On();
218 4 }
219 3 flag2 &= ~BIT_0;
220 3 flag2 &= ~BIT_1;
221 3 flag2 |= BIT_2;
222 3 SetAV_System();
223 3 Timer3 = 100;
224 3 }
225 2 }
226 1 else if(((value & BIT_6) != 0x00) && ((flag2 & BIT_1) != 0))
227 1 { //change to unlocked
228 2 AUDIO_MUTE(); //AUDIO MUTE
229 2 flag1 &= ~BIT_1; //Clear force to background
230 2 ForceToBackground(1);
231 2 }
232 1 // }
233 1 }
234
235 void SetAV_System(void)
236 {
237 1 flag1 &= ~BIT_5;
238 1 CheckColorSystem();
239 1 SetScalerAV();
240 1 SetDisplayNormal();
C51 COMPILER V7.50 SAA7114 03/18/2008 22:04:58 PAGE 5
241 1 }
242
243 void CheckColorSystem(void)
244 {
245 1 unsigned char code tab1[]={
246 1 // 0x09,0x29,0x01,0x31,0x21,0x11,0x59
247 1 0x81,0x91,0xa1,0xb1,0xc1,0xd0
248 1 // 0x01,0x11,0x21,0x31,0x41,0x51
249 1 };
250 1
251 1 unsigned char code tab2[]={
252 1 // 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0xae
253 1 // 0x2e,0x2e,0x2e,0x2e,0x2e,0xae
254 1 0x2a,0x2a,0x2a,0x2a,0x2a,0x80
255 1 };
256 1
257 1 unsigned char i,value,k;
258 1 if((flag1 & BIT_5) != 0)
259 1 return;
260 1 i = 0;
261 1 WriteIIC_HW(SAA7114,0x0e,tab1[i]);
262 1 WriteIIC_HW(SAA7114,0x0f,tab2[i]);
263 1 k = 3;
264 1 while(k != 0){
265 2 k--;
266 2 value = ReadIIC_HW(SAA7114,0x1f);
267 2 if((value & 0x41) != 0x01){
268 3 for(i=0; i<6; i++){
269 4 WriteIIC_HW(SAA7114,0x0e,tab1[i]);
270 4 WriteIIC_HW(SAA7114,0x0f,tab2[i]);
271 4 Sleep(100);
272 4 value = ReadIIC_HW(SAA7114,0x1f);
273 4 if((value & 0x41) == 0x01){
274 5 ColorStatus = i;
275 5 break;
276 5 }
277 4 }
278 3 }
279 2 }
280 1 if(i == 0x06){
281 2 i = ColorStatus;
282 2 WriteIIC_HW(SAA7114,0x0e,tab1[i]);
283 2 WriteIIC_HW(SAA7114,0x0f,tab2[i]);
284 2 flag1 |= BIT_5;
285 2 if((flag3 & BIT_2) != 0x00){
286 3 printf("Color system = B/W\r\n");
287 3 }
288 2 }
289 1 else{
290 2 flag1 &= ~BIT_5;
291 2 if((flag3 & BIT_2) != 0x00){
292 3 printf("Color system = %x\r\n",(unsigned short)i);
293 3 }
294 2 }
295 1 WriteIIC_HW(SAA7114,0x0e,tab1[i] & ~BIT_7);
296 1 WriteIIC_HW(SAA7114,0x0e,tab1[i]);
297 1 i = i * 2;
298 1 if(((value & BIT_5) == 0) && ((flag2 & 0x06) == 0x04)){
299 2 //change to 50Hz
300 2 flag2 &= ~BIT_2;
301 2 }
302 1 if(((value & BIT_5) != 0) && ((flag2 & 0x06) == 0x00)){
C51 COMPILER V7.50 SAA7114 03/18/2008 22:04:58 PAGE 6
303 2 //change to 60Hz
304 2 flag2 |= BIT_2;
305 2 }
306 1 if((flag2 & BIT_2) != 0)
307 1 i++;
308 1 switch(i){
309 2 case 0:
310 2 case 3:
311 2 case 4:
312 2 case 7:
313 2 //PAL
314 2 value = ReadIIC_HW(SAA7114,0x09);
315 2 value &= BIT_7;
316 2 value |= BIT_6;
317 2 WriteIIC_HW(SAA7114,0x09,value);
318 2 value = ReadIIC_HW(SAA7114,0x0e);
319 2 value &= ~BIT_3;
320 2 WriteIIC_HW(SAA7114,0x0e,value);
321 2 WriteIIC_HW(SAA7114,0x0f,0x2a);
322 2 WriteIIC_HW(SAA7114,0x10,0x06);
323 2 break;
324 2 case 1:
325 2 case 2:
326 2 case 5:
327 2 case 6:
328 2 case 9:
329 2 //NTSC
330 2 value = ReadIIC_HW(SAA7114,0x09);
331 2 value &= BIT_7;
332 2 value |= BIT_6;
333 2 WriteIIC_HW(SAA7114,0x09,value);
334 2 value = ReadIIC_HW(SAA7114,0x0e);
335 2 value |= BIT_3;
336 2 WriteIIC_HW(SAA7114,0x0e,value);
337 2 WriteIIC_HW(SAA7114,0x0f,0x2a);
338 2 WriteIIC_HW(SAA7114,0x10,0x0e);
339 2 break;
340 2 case 10:
341 2 //SECAM
342 2 value = ReadIIC_HW(SAA7114,0x09);
343 2 value &= BIT_7;
344 2 value |= 0x1b;
345 2 WriteIIC_HW(SAA7114,0x09,value);
346 2 WriteIIC_HW(SAA7114,0x0f,0x80);
347 2 WriteIIC_HW(SAA7114,0x10,0x00);
348 2 break;
349 2 }
350 1 }
351
352 void WritePageSAA7114(unsigned char addr1,unsigned char addr2)
353 {
354 1 unsigned char i,ch;
355 1 /* start bit */
356 1 /* transmit device */
357 1 INTIIC1_FLG = 0xff;
358 1 IIC1_DATA = SAA7114;
359 1 IIC1_CLK = 0x20 | IIC_BaudRate;
360 1 IIC1_CON = 0x00;
361 1 /* transmit addr */
362 1 MasterSendByte(addr1);
363 1 for(i=0; i<16; i++){
364 2 ch = NTSC_AV[addr2 + i];
C51 COMPILER V7.50 SAA7114 03/18/2008 22:04:58 PAGE 7
365 2 MasterSendByte(ch);
366 2 }
367 1 /* transmit dumy data for stop bit */
368 1 WaitTx();
369 1 /* stop bit */
370 1 IIC1_CLK = 0xA0|IIC_BaudRate;
371 1 // IIC1_CON = 0x00;
372 1 WaitStop();
373 1 }
374
375 void SetVideoBrightness(void)
376 {
377 1 unsigned char value;
378 1 value = Brightness * 2 + 28;
379 1 WriteIIC_HW(SAA7114,0x0a,value);
380 1 if((flag3 & BIT_2) != 0x00){
381 2 printf("Brightness of SAA7114 = %x\r\n",(unsigned short)value);
382 2 }
383 1 }
384 void SetVideoContrast(void)
385 {
386 1 unsigned char value;
387 1 value = Contrast + 14;
388 1 WriteIIC_HW(SAA7114,0x0b,value);
389 1 if((flag3 & BIT_2) != 0x00){
390 2 printf("Contrast of SAA7114 = %x\r\n",(unsigned short)value);
391 2 }
392 1 }
393 void SetVideoSaturation(void)
394 {
395 1 unsigned char value;
396 1 value = Saturation + 14;
397 1 WriteIIC_HW(SAA7114,0x0c,value);
398 1 if((flag3 & BIT_2) != 0x00){
399 2 printf("Saturation of SAA7114 = %x\r\n",(unsigned short)value);
400 2 }
401 1 }
402 void SetVideoTint(void)
403 {
404 1 unsigned char value;
405 1 value = (((unsigned short)Tint * 255 + 50) / 100) - 128;
406 1 WriteIIC_HW(SAA7114,0x0d,value);
407 1 if((flag3 & BIT_2) != 0x00){
408 2 printf("Tint of SAA7114 = %x\r\n",(unsigned short)value);
409 2 }
410 1 }
411 void SetVideoSharpness(void)
412 {
413 1 code unsigned char SharpnessTab[]={
414 1 // 0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,0x00,0x07,0x06,0x05,0x04,0x03,0x02,0x01
415 1 0x0b,0x0a,0x09,0x08,0x00,0x06,0x04,0x02
416 1 };
417 1 unsigned char value;
418 1 value = ReadIIC_HW(SAA7114,0x09) & 0xf0;
419 1 value |= SharpnessTab[Sharpness];
420 1 WriteIIC_HW(SAA7114,0x09,value);
421 1 if((flag3 & BIT_2) != 0x00){
422 2 printf("Sharpness of SAA7114 = %x\r\n",(unsigned short)value);
423 2 }
424 1 }
C51 COMPILER V7.50 SAA7114 03/18/2008 22:04:58 PAGE 8
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1232 ----
CONSTANT SIZE = 437 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 13
IDATA SIZE = 1 ----
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 + -