📄 tuner.lst
字号:
489 1
490 1 if(FM_AM_Select == FM_MODE)
491 1 {
492 2 //取出台的对应频率
493 2 TEMP1 = FM_Start + (Scan_Channel * 2);
494 2 DeltFMFreq = I2C_GetByte(A24C02, TEMP1);
495 2 TEMP2 = I2C_GetByte(A24C02, TEMP1+1);
496 2 DeltFMFreq += (TEMP2 << 8);
497 2 if(DeltFMFreq > FMFREQMAX)
498 2 DeltFMFreq = 0;
499 2 Current_Freq = FMFREQMIN+ DeltFMFreq;
500 2 }
501 1 else
502 1 {
503 2 DeltAMFreq = I2C_GetByte(A24C02, (AM_Start + Scan_Channel));
504 2 if(DeltAMFreq > AMFREQMAX)
505 2 DeltAMFreq = 0;
506 2 Current_Freq = AMFREQMIN+ DeltAMFreq;
507 2 }
508 1 //设置当前频率
509 1 RadioMute();
510 1 RadioFreq(Current_Freq);
511 1 RadioOpen();
512 1 TO_MAIN_DISPLAY = 0;
513 1 Channel_Display = 100;//这个值用来显示台号后再显示频率的时间差
514 1 }
515
516
517 //执行上一曲频率
518 void Proc_Tuner_PREV_KEY(void)
519 {
520 1
521 1 Manual_Scan_Enable = Manual_Scan_End;
522 1 Auto_Scan_Enable = Auto_Scan_Stop;
523 1
524 1 if(FM_AM_Select == FM_MODE)
525 1 {
526 2 if(Scan_Channel == 0)
527 2 Scan_Channel = FM_MAX_Channel - 1;
528 2 else
529 2 Scan_Channel--;
530 2 }
531 1 else
532 1 {
533 2
534 2 if(Scan_Channel == 0)
535 2 Scan_Channel = AM_MAX_Channel - 1;
536 2 else
537 2 Scan_Channel--;
538 2 }
539 1
540 1 if(FM_AM_Select == FM_MODE)
541 1 {
542 2 DeltFMFreq = I2C_GetByte(A24C02, (FM_Start + (Scan_Channel * 2) + 1));
543 2 DeltFMFreq <<= 8;
544 2 DeltFMFreq += I2C_GetByte(A24C02, (FM_Start + (Scan_Channel * 2)) );
545 2 if(DeltFMFreq > FMFREQMAX)
546 2 DeltFMFreq = 0;
547 2 Current_Freq = FMFREQMIN+ DeltFMFreq;
548 2 }
549 1 else
550 1 {
C51 COMPILER V7.20 TUNER 07/16/2005 13:42:41 PAGE 10
551 2 DeltAMFreq = I2C_GetByte(A24C02, (AM_Start + Scan_Channel));
552 2 if(DeltAMFreq > AMFREQMAX)
553 2 DeltAMFreq = 0;
554 2 Current_Freq = AMFREQMIN+ DeltAMFreq;
555 2 }
556 1 RadioMute();
557 1 RadioFreq(Current_Freq);
558 1 RadioOpen();
559 1 TO_MAIN_DISPLAY = 0;
560 1 Channel_Display = 100;
561 1 }
562
563 //整机上电初始化Tuner, 进入FM模式,
564 void Tuner_Open(void)
565 {
566 1 Scan_Channel = 0;
567 1 DeltFMFreq = I2C_GetByte(A24C02, (FM_Start + 0));
568 1 DeltFMFreq += (WORD)( I2C_GetByte(A24C02, (FM_Start + 1)) << 8);
569 1 if(DeltFMFreq > FMFREQMAX)
570 1 DeltFMFreq = 0;
571 1 Current_Freq = FMFREQMIN+ DeltFMFreq;
572 1 RadioMute();
573 1 RadioFreq(Current_Freq);
574 1 RadioOpen();
575 1 }
576
577
578 //从其他通道输入模式转换到tuner输入模式
579 void Change_Tuner_Mode(void)
580 {
581 1 if(FM_AM_Select == FM_MODE)//如果在FM MODE
582 1 {
583 2 Current_Freq = FMFREQMIN+ DeltFMFreq;//设置FM的工作频率
584 2 }
585 1 else
586 1 {
587 2 Current_Freq = AMFREQMIN+ DeltAMFreq;//设置AM的工作频率
588 2 }
589 1 RadioMute(); //中频静音
590 1 RadioFreq(Current_Freq); //设置当前频率
591 1 RadioOpen(); //打开收音
592 1 }
593
594 //tuner单步调整
595 void Tuner_Step(BYTE Direct)
596 {
597 1 if(Direct == 0)
598 1 RadioDown();//频率减一步
599 1 else
600 1 RadioUp(); //频率加一步
601 1 RadioMute(); //中频静音
602 1 RadioFreq(Current_Freq);//设置当前频率
603 1 RadioOpen();
604 1 }
605
606 //执行到快进到下一个可以锁定的频率
607 void Proc_Tuner_FF_KEY(void)
608 {
609 1 Auto_Scan_Enable = 0; //自动扫描禁止
610 1 Manual_Scan_Enable = 1; //手动扫描打开,并设置向后(频率加)方向
611 1 }
612
C51 COMPILER V7.20 TUNER 07/16/2005 13:42:41 PAGE 11
613 //执行快退到上一个可以锁定的频率
614 void Proc_Tuner_FB_KEY(void)
615 {
616 1 Auto_Scan_Enable = 0; //自动扫描禁止
617 1 Manual_Scan_Enable = -1;//手动扫描打开,并设置向前(频率减)方向
618 1 }
619
620
621 //执行自动扫描台的频率
622 void Proc_Tuner_AUTOSCAN_KEY(void)
623 {
624 1 Auto_Scan_Enable = 1;//执行自动扫描功能
625 1 Manual_Scan_Enable = 0;//手动扫描禁止
626 1 Auto_Scan_Start = 0; //将第一次扫描标志置位
627 1 }
628
629 // FM/AM之间的切换
630 void Proc_FMAM_Change(void)
631 {
632 1 Scan_Channel = 0;
633 1 if(FM_AM_Select == FM_MODE)
634 1 {
635 2 Current_Freq = AMFREQMIN+ DeltAMFreq;
636 2 FM_AM_Select = AM_MODE;
637 2 }
638 1 else
639 1 {
640 2 Current_Freq = FMFREQMIN+ DeltFMFreq;
641 2 FM_AM_Select = FM_MODE;
642 2 }
643 1 //假如切换前另外一个模式正在自动/手动扫描,可以停止
644 1 Auto_Scan_Enable = 0;
645 1 Manual_Scan_Enable = 0;
646 1 Auto_Scan_Start = 0;
647 1
648 1 RadioMute();
649 1 RadioFreq(Current_Freq);
650 1 RadioOpen();
651 1 }
652
653 //从静音状态恢复到收音状态时, FM/AM的显示要加上部分特殊ICON
654 void Tuner_MuteOFF_Display(void)
655 {
656 1 if(FM_AM_Select == FM_MODE)
657 1 {
658 2 VFD_ICON_Display(ICON_FM | ICON_MHZ);
659 2 }
660 1 else
661 1 {
662 2 VFD_ICON_Display(ICON_AM | ICON_KHZ);
663 2 }
664 1
665 1 }
666 //执行TUNER存储
667 void Proc_Digital_Key(void)
668 {
669 1
670 1 //如果前面已经按下了MEMORY_KEY,
671 1 if((Memory_Start == 1) && (NumberKey_Dealed == 0))
672 1 {
673 2 if(Current_Key < KEY_5PLUS) //如果按下的按键是KEY_0, KEY_1,KEY_2,KEY_3,KEY_4
674 2 {
C51 COMPILER V7.20 TUNER 07/16/2005 13:42:41 PAGE 12
675 3 Digital_Number += Current_Key;//记忆数字键
676 3 NumberKey_Dealed = 1;
677 3 }
678 2 else if(Current_Key == KEY_5PLUS) //如果按下的按键是KEY_5PLUS
679 2 Digital_Number += 5;
680 2
681 2 //判断输入的数字是否大于台号的最大值
682 2 if( ((Digital_Number > FM_MAX_Channel) && (FM_AM_Select == FM_MODE))
683 2 || ((Digital_Number > AM_MAX_Channel) && (FM_AM_Select == AM_MODE))
684 2 || (Digital_Number == 0) )//如果数字台号为零,也为非法值
685 2 {
686 3
687 3 Digital_Number = 0; //如果大于, 返回
688 3 Memory_Start = 0;
689 3 TO_MAIN_DISPLAY = 50;
690 3 return;
691 3 }
692 2 TO_MAIN_DISPLAY = 400;
693 2
694 2 }
695 1 }
696
697 /*===================== MEMORY_KEY的功能 ===============*/
698 void Proc_MEMORY_Key(void)
699 {
700 1
701 1 if(Memory_Start == 0)
702 1 {
703 2 String_Display[0] = 'M';
704 2 String_Display[1] = 'E';
705 2 String_Display[2] = 'M';
706 2 String_Display[3] = '0';
707 2 String_Display[4] = '0';
708 2 VFD_Display(String_Display, 5, 0, 0);
709 2 if(FM_AM_Select == FM_MODE)
710 2 {
711 3 VFD_ICON_Display(ICON_FM);
712 3 }
713 2 else
714 2 {
715 3 VFD_ICON_Display(ICON_AM);
716 3 }
717 2 Memory_Start = 1; //存贮标志
718 2 NumberKey_Dealed = 0;
719 2 TO_MAIN_DISPLAY = 400;
720 2 Digital_Number = 0;
721 2 }
722 1 else
723 1 {
724 2 if(Digital_Number > 0)
725 2 {
726 3 if(FM_AM_Select == FM_MODE)
727 3 {
728 4 I2C_PutByte(A24C02, (Digital_Number-1)* 2 + FM_Start, DeltFMFreq & 0xFF );
729 4 DelayX1ms(2);
730 4 I2C_PutByte(A24C02, (Digital_Number-1)* 2 + FM_Start + 1, (BYTE) ((DeltFMFreq & 0xFF00) >> 8) );
731 4 }
732 3 else
733 3 {
734 4 I2C_PutByte(A24C02, (AM_Start + Digital_Number - 1), (BYTE)(DeltAMFreq & 0xFF) );
735 4 }
736 3 }
C51 COMPILER V7.20 TUNER 07/16/2005 13:42:41 PAGE 13
737 2 Memory_Start = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -