📄 iic.lst
字号:
295 1 }
296
297 void WriteIICV_HW(unsigned char device,unsigned char addr,unsigned char ch)
298 {
299 1 /* start bit */
300 1 /* transmit device */
301 1 INTIIC1_FLG = 0xff;
C51 COMPILER V7.50 IIC 03/18/2008 22:04:55 PAGE 6
302 1 IIC1_DATA = device;
303 1 IIC1_CLK = 0x20 | IIC_BaudRate;
304 1 IIC1_CON = 0x00;
305 1 /* transmit addr */
306 1 MasterSendByte(addr);
307 1 /* transmit data */
308 1 MasterSendByteV(ch);
309 1 /* transmit dumy data for stop bit */
310 1 WaitTx();
311 1 /* stop bit */
312 1 IIC1_CLK = 0xA0|IIC_BaudRate;
313 1 // IIC1_CON = 0x00;
314 1 WaitStop();
315 1 }
316
317 void MasterSendByteV(unsigned char i)
318 {
319 1 Timer1 = 100;
320 1 while((INTIIC1_FLG & INTTX) == 0){
321 2 if(Timer1 == 0){
322 3 if((flag3 & BIT_2) != 0x00){
323 4 printf("ACK Fail6\r\n");
324 4 }
325 3 EA = 0;
326 3 break;
327 3 }
328 2 }
329 1 INTHV_FLG |= INT_V;
330 1 Timer1 = 40;
331 1 while(Timer1 != 0){
332 2 if((INTHV_FLG & INT_V) != 0)
333 2 break;
334 2 }
335 1 INTIIC1_FLG = INTTX;
336 1 IIC1_DATA = i;
337 1 if(Timer1 == 0){
338 2 BackLightOff();
339 2 flag2 |= BIT_0;
340 2 H_SYNC_Temp = 0xffff;
341 2 V_SYNC_Temp = 0xffff;
342 2 if((flag3 & BIT_2) != 0x00){
343 3 printf("Mode change\r\n");
344 3 }
345 2 }
346 1 }
347
348 unsigned short ReadWordIIC_HW(unsigned char device,unsigned char addr)
349 {
350 1 unsigned char ch;
351 1 unsigned short value;
352 1 /* start bit */
353 1 /* transmit device */
354 1 INTIIC1_FLG = 0xff;
355 1 IIC1_DATA = device;
356 1 IIC1_CLK = 0x20 | IIC_BaudRate;
357 1 /* transmit addr */
358 1 MasterSendByte(addr);
359 1 /* transmit dumy data for restart bit */
360 1 WaitTx();
361 1 /* stop bit */
362 1 IIC1_CLK = 0xA0|IIC_BaudRate;
363 1 // IIC1_CON = 0x00;
C51 COMPILER V7.50 IIC 03/18/2008 22:04:55 PAGE 7
364 1 /* restart bit */
365 1 WaitStop();
366 1 /* transmit device */
367 1 IIC1_DATA = device+1;
368 1 IIC1_CLK = 0x60 | IIC_BaudRate;
369 1 WaitTx();
370 1 /* read data */
371 1 IIC1_CON = 0x00;
372 1 ch = MasterReadByte();
373 1 IIC1_CON = 0x02;
374 1 value = MasterReadByte();
375 1 value <<= 8;
376 1 value |= ch;
377 1 /* no ack */
378 1 /* stop bit */
379 1 // IIC1_CLK = 0xA0|IIC_BaudRate;
380 1 // IIC1_CON = 0x00;
381 1 WaitStop();
382 1 return(value);
383 1 }
384
385 unsigned char ReadIIC_HW(unsigned char device,unsigned char addr)
386 {
387 1 unsigned char value;
388 1 /* start bit */
389 1 /* transmit device */
390 1 INTIIC1_FLG = 0xff;
391 1 IIC1_DATA = device;
392 1 IIC1_CLK = 0x20 | IIC_BaudRate;
393 1 /* transmit addr */
394 1 MasterSendByte(addr);
395 1 /* transmit dumy data for restart bit */
396 1 WaitTx();
397 1 /* stop bit */
398 1 IIC1_CLK = 0xA0 | IIC_BaudRate;
399 1 // IIC1_CON = 0x00;
400 1 /* restart bit */
401 1 Delay();
402 1 WaitStop();
403 1 /* transmit device */
404 1 IIC1_DATA = device+1;
405 1 IIC1_CLK = 0x60 | IIC_BaudRate;
406 1 WaitTx();
407 1 /* read data */
408 1 IIC1_CON = 0x02;
409 1 value = MasterReadByte();
410 1 /* no ack */
411 1 /* stop bit */
412 1 // IIC1_CLK = 0xA0|IIC_BaudRate;
413 1 // IIC1_CON = 0x00;
414 1 Delay();
415 1 WaitStop();
416 1 return(value);
417 1 }
418
419 void InitTuner(void)
420 {
421 1 INTIIC1_FLG = 0xff;
422 1 IIC1_DATA = 0xc0;
423 1 IIC1_CLK = 0x20 | IIC_BaudRate;
424 1 IIC1_CON = 0x00;
425 1 MasterSendByte(INITFREQHIGH);
C51 COMPILER V7.50 IIC 03/18/2008 22:04:55 PAGE 8
426 1 MasterSendByte(INITFREQLOW);
427 1 MasterSendByte(CONTROLBYTE0);
428 1 MasterSendByte(CONTROLBYTE1);
429 1 WaitTx();
430 1 IIC1_CLK = 0xA0|IIC_BaudRate;
431 1 WaitStop();
432 1 }
433
434 void SetTuner(unsigned char db1,unsigned char db2,unsigned char cb,unsigned char pb)
435 {
436 1 INTIIC1_FLG = 0xff;
437 1 IIC1_DATA = 0xc0;
438 1 IIC1_CLK = 0x20 | IIC_BaudRate;
439 1 IIC1_CON = 0x00;
440 1 MasterSendByte(db1);
441 1 MasterSendByte(db2);
442 1 MasterSendByte(cb);
443 1 MasterSendByte(pb);
444 1 WaitTx();
445 1 IIC1_CLK = 0xA0|IIC_BaudRate;
446 1 WaitStop();
447 1 }
448
449 unsigned char ReadIIC_Tuner()
450 {
451 1 unsigned char value;
452 1 INTIIC1_FLG = 0xff;
453 1 IIC1_DATA = 0xc0;
454 1 IIC1_CLK = 0x20 | IIC_BaudRate;
455 1 // MasterSendByte(addr);
456 1 WaitTx();
457 1 IIC1_CLK = 0xA0 | IIC_BaudRate;
458 1 WaitStop();
459 1 IIC1_DATA = 0xc1;
460 1 IIC1_CLK = 0x60 | IIC_BaudRate;
461 1 WaitTx();
462 1 IIC1_CON = 0x02;
463 1 value = MasterReadByte();
464 1 WaitStop();
465 1 return(value);
466 1 }
467
468 unsigned char MasterReadByte(void)
469 {
470 1 unsigned char i;
471 1 while((INTIIC1_FLG & (INTRX | INTNAK)) != INTRX){
472 2 if((INTIIC1_FLG & INTNAK) == INTNAK){
473 3 if((flag3 & BIT_2) != 0x00){
474 4 printf("ACK Fail4\r\n");
475 4 }
476 3 EA = 0;
477 3 break;
478 3 }
479 2 };
480 1 INTIIC1_FLG = INTRX;
481 1 i = IIC1_DATA;
482 1 return i;
483 1 }
484
485 void WaitStop(void)
486 {
487 1 Timer1 = 100;
C51 COMPILER V7.50 IIC 03/18/2008 22:04:55 PAGE 9
488 1 while((IIC1_CON & STOP) == 0)
489 1 {
490 2 if(Timer1 == 0)
491 2 {
492 3 if((flag3 & BIT_2) != 0x00)
493 3 {
494 4 printf("Stop Fail\r\n");
495 4 }
496 3 EA = 0;
497 3 break;
498 3 }
499 2 }
500 1 IIC1_CON = 0x00;
501 1 }
502
503 void CheckDevice(void)
504 {
505 1 DeviceFlag = 0;
506 1 //check SAA7114
507 1 if((flag3 & BIT_2) != 0x00){
508 2 printf("Video Decoder ");
509 2 }
510 1 Sleep(10);
511 1 if(TestIIC_HW(SAA7114) == 0)
512 1 {
513 2 DeviceFlag &= ~BIT_0;
514 2 }
515 1 else
516 1 {
517 2 DeviceFlag |= BIT_0;
518 2 }
519 1 }
520
521 void TestTuner(void)
522 {
523 1 Sleep(10);
524 1 if(TestIIC_HW(TUNER_ID) == 0)
525 1 DeviceFlag &= ~BIT_1;
526 1 else
527 1 DeviceFlag |= BIT_1;
528 1 }
529
530 unsigned char TestIIC_HW(unsigned char device)
531 {
532 1 unsigned char value;
533 1 // start bit
534 1 // transmit device
535 1 INTIIC1_FLG = 0xff;//Read
536 1 IIC1_DATA = device + 1;
537 1 IIC1_CLK = 0x60 | IIC_BaudRate;//IIC_Baudrate=0x01
538 1 // IIC1_CON = 0x00;
539 1 Timer1 = 100;
540 1 while((INTIIC1_FLG & INTTX) == 0)
541 1 {
542 2 if(Timer1 == 0)
543 2 {
544 3 break;
545 3 }
546 2 }
547 1 INTIIC1_FLG = INTTX;
548 1 // read data
549 1 IIC1_CON = 0x02;
C51 COMPILER V7.50 IIC 03/18/2008 22:04:55 PAGE 10
550 1 Timer1 = 100;
551 1 while((INTIIC1_FLG & INTRX) == 0)
552 1 {
553 2 if(Timer1 == 0)
554 2 break;
555 2 }
556 1 if(Timer1 == 0)
557 1 {
558 2 IIC1_CLK = 0xA0|IIC_BaudRate;
559 2 IIC1_CON = 0x00;
560 2 value = 0;
561 2 if((flag3 & BIT_2) != 0x00)
562 2 {
563 3 printf("not install\r\n");
564 3 }
565 2 }
566 1 else
567 1 {
568 2 value = IIC1_DATA;
569 2 value |= BIT_1;
570 2 // no ack
571 2 // stop bit
572 2 // IIC1_CLK = 0xA0|IIC_BaudRate;
573 2 // IIC1_CON = 0x00;
574 2 WaitStop();
575 2 if((flag3 & BIT_2) != 0x00){
576 3 printf("install\r\n");
577 3 }
578 2 }
579 1 return(value);
580 1 }
581
582
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1633 ----
CONSTANT SIZE = 152 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 38
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 + -