📄 tuner.lst
字号:
738 2 NumberKey_Dealed = 0;
739 2 String_Display[3] = (Digital_Number / 10) + '0';
740 2 String_Display[4] = (Digital_Number % 10) + '0';
741 2 TO_MAIN_DISPLAY = 80;
742 2 Digital_Number = 0;
743 2 VFD_Display(String_Display, 5, 0, 0);
744 2 }
745 1 }
746
747 /*======================= 各频率通道的频率初始值设定 =================*/
748 //十个字节对应的频率是87.5M, 90M, 98M, 106M, 108MHZ
749 code BYTE FM_Default_Freq[] = {0,0, 50,0, 210,0, 0x72,0x1, 0x9A,0x1};
750
751 //对应的频率是530K, 600K, 1000K, 1400K, 1710KHZ
752 code BYTE AM_Default_Freq[] = {0, 14, 94, 174, 236};
753
754 /*======================= 各频率通道的频率初始值设定 =================*/
755 //用于在初始化EEPROM, 该函数在POWER_ON的时候调用, 用来对FM和AM的存储频率
756 //初始化, 在产品出货前,工程也可以通过一些定义的按键顺序来初始化,
757 /*======================= 各频率通道的频率初始值设定 =================*/
758 void Tuner_Channel_Init(void)
759 {
760 1 BYTE EEPROML;
761 1 BYTE EEPROMH;
762 1 //先读出AT24C02的地址Channel_Test(0x20,0x21)的值,
763 1 //如果分别等于0x55和0xAA,那么认为无需要初始化
764 1 EEPROML = I2C_GetByte( A24C02, Channel_Test );
765 1 EEPROMH = I2C_GetByte( A24C02, Channel_Test + 1);
766 1 if((EEPROML == 0x55) && (EEPROMH == 0xAA))
767 1 return;
768 1
769 1 //FM 模式, 先写入87.5M, 90M, 98M, 106M, 108MHZ的频率
770 1 for(EEPROML = 0; EEPROML < 10; EEPROML++)
771 1 {
772 2 I2C_PutByte(A24C02, (FM_Start + EEPROML), FM_Default_Freq[EEPROML]);
773 2 DelayX1ms(2);
774 2 }
775 1 //剩下的(FM_MAX_Channel -5)的空间内都写入87.5MHZ,即偏差都为0
776 1 for(EEPROML = 10; EEPROML < (FM_MAX_Channel * 2); EEPROML ++)
777 1 {
778 2 I2C_PutByte(A24C02, (FM_Start + EEPROML), 0);
779 2 DelayX1ms(2);
780 2 }
781 1
782 1 //AM 模式,先写入530K, 600K, 1000K, 1400K, 1710Khz的频率
783 1 for(EEPROML = 0; EEPROML < 5; EEPROML ++)
784 1 {
785 2 I2C_PutByte(A24C02, (AM_Start + EEPROML), AM_Default_Freq[EEPROML]);
786 2 DelayX1ms(2);
787 2 }
788 1 //在剩余(AM_MAX_Channel - 5)个的空间内写入530K,即偏差为0的频率
789 1 for(EEPROML = 5; EEPROML < AM_MAX_Channel; EEPROML ++)
790 1 {
791 2 I2C_PutByte(A24C02, (AM_Start + EEPROML), 0);
792 2 DelayX1ms(2);
793 2 }
794 1
795 1 //写标志为,证明EEPROM已经初始化
796 1 I2C_PutByte(A24C02, Channel_Test, 0x55);
797 1 DelayX1ms(2);
798 1 I2C_PutByte(A24C02, Channel_Test + 1, 0xAA);
C51 COMPILER V7.20 TUNER 07/16/2005 13:42:41 PAGE 14
799 1 }
C51 COMPILER V7.20 TUNER 07/16/2005 13:42:41 PAGE 15
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _SendByte_ToTuner (BEGIN)
; SOURCE LINE # 18
0000 8F00 R MOV ucData,R7
; SOURCE LINE # 19
; SOURCE LINE # 22
0002 E4 CLR A
0003 F500 R MOV i,A
0005 ?C0001:
; SOURCE LINE # 23
; SOURCE LINE # 24
0005 C2B5 CLR Tuner_CLK
; SOURCE LINE # 25
0007 E500 R MOV A,ucData
0009 30E004 JNB ACC.0,?C0004
; SOURCE LINE # 26
000C D2A1 SETB Tuner_DATA_IN
000E 8002 SJMP ?C0005
0010 ?C0004:
; SOURCE LINE # 28
0010 C2A1 CLR Tuner_DATA_IN
0012 ?C0005:
; SOURCE LINE # 29
0012 120000 E LCALL Delay5US
; SOURCE LINE # 30
0015 D2B5 SETB Tuner_CLK
; SOURCE LINE # 31
0017 E500 R MOV A,ucData
0019 C3 CLR C
001A 13 RRC A
001B F500 R MOV ucData,A
; SOURCE LINE # 32
001D 0500 R INC i
001F E500 R MOV A,i
0021 C3 CLR C
0022 9408 SUBB A,#08H
0024 40DF JC ?C0001
; SOURCE LINE # 33
0026 ?C0006:
0026 22 RET
; FUNCTION _SendByte_ToTuner (END)
; FUNCTION ReadByte_FromTuner (BEGIN)
; SOURCE LINE # 40
; SOURCE LINE # 41
; SOURCE LINE # 42
0000 E4 CLR A
0001 F500 R MOV ucData,A
; SOURCE LINE # 45
0003 F500 R MOV i,A
0005 ?C0007:
; SOURCE LINE # 46
; SOURCE LINE # 47
0005 C2B5 CLR Tuner_CLK
; SOURCE LINE # 48
0007 120000 E LCALL Delay5US
; SOURCE LINE # 49
000A D2B5 SETB Tuner_CLK
; SOURCE LINE # 50
000C 120000 E LCALL Delay5US
C51 COMPILER V7.20 TUNER 07/16/2005 13:42:41 PAGE 16
; SOURCE LINE # 51
000F E500 R MOV A,ucData
0011 25E0 ADD A,ACC
0013 F500 R MOV ucData,A
; SOURCE LINE # 52
0015 30A002 JNB Tuner_DATA_OUT,?C0009
; SOURCE LINE # 53
0018 0500 R INC ucData
; SOURCE LINE # 54
001A ?C0009:
001A 0500 R INC i
001C E500 R MOV A,i
001E C3 CLR C
001F 9408 SUBB A,#08H
0021 40E2 JC ?C0007
0023 ?C0008:
; SOURCE LINE # 55
0023 AF00 R MOV R7,ucData
; SOURCE LINE # 56
0025 ?C0011:
0025 22 RET
; FUNCTION ReadByte_FromTuner (END)
; FUNCTION L?0169 (BEGIN)
0000 7B00 MOV R3,#00H
0002 7A00 E MOV R2,#HIGH ucRadioControl
0004 7900 E MOV R1,#LOW ucRadioControl
0006 7D03 MOV R5,#03H
; FUNCTION _SendString_ToTuner (BEGIN)
; SOURCE LINE # 66
0008 8D00 R MOV ucN,R5
000A 8B00 R MOV ucData,R3
000C 8A00 R MOV ucData+01H,R2
000E 8900 R MOV ucData+02H,R1
;---- Variable 'ucAddr' assigned to Register 'R7' ----
; SOURCE LINE # 67
; SOURCE LINE # 70
0010 C2A3 CLR Tuner_CS
; SOURCE LINE # 71
0012 120000 R LCALL _SendByte_ToTuner
; SOURCE LINE # 72
0015 D2A3 SETB Tuner_CS
; SOURCE LINE # 73
0017 E4 CLR A
0018 F500 R MOV i,A
001A ?C0012:
001A E500 R MOV A,i
001C C3 CLR C
001D 9500 R SUBB A,ucN
001F 5017 JNC ?C0013
; SOURCE LINE # 74
0021 AB00 R MOV R3,ucData
0023 AA00 R MOV R2,ucData+01H
0025 A900 R MOV R1,ucData+02H
0027 850082 R MOV DPL,i
002A 758300 MOV DPH,#00H
002D 120000 E LCALL ?C?CLDOPTR
0030 FF MOV R7,A
0031 120000 R LCALL _SendByte_ToTuner
0034 0500 R INC i
0036 80E2 SJMP ?C0012
0038 ?C0013:
C51 COMPILER V7.20 TUNER 07/16/2005 13:42:41 PAGE 17
; SOURCE LINE # 75
0038 C2A3 CLR Tuner_CS
; SOURCE LINE # 76
003A 22 RET
; FUNCTION _SendString_ToTuner (END)
; FUNCTION _ReadString_FromTuner (BEGIN)
; SOURCE LINE # 85
0000 8D00 R MOV ucN,R5
0002 8B00 R MOV ucData,R3
0004 8A00 R MOV ucData+01H,R2
0006 8900 R MOV ucData+02H,R1
;---- Variable 'ucAddr' assigned to Register 'R7' ----
; SOURCE LINE # 86
; SOURCE LINE # 89
0008 C2A3 CLR Tuner_CS
; SOURCE LINE # 90
000A 120000 R LCALL _SendByte_ToTuner
; SOURCE LINE # 91
000D D2A3 SETB Tuner_CS
; SOURCE LINE # 92
000F E4 CLR A
0010 F500 R MOV i,A
0012 ?C0016:
0012 E500 R MOV A,i
0014 C3 CLR C
0015 9500 R SUBB A,ucN
0017 5017 JNC ?C0017
; SOURCE LINE # 93
0019 120000 R LCALL ReadByte_FromTuner
001C AB00 R MOV R3,ucData
001E AA00 R MOV R2,ucData+01H
0020 A900 R MOV R1,ucData+02H
0022 850082 R MOV DPL,i
0025 758300 MOV DPH,#00H
0028 EF MOV A,R7
0029 120000 E LCALL ?C?CSTOPTR
002C 0500 R INC i
002E 80E2 SJMP ?C0016
0030 ?C0017:
; SOURCE LINE # 94
0030 C2A3 CLR Tuner_CS
; SOURCE LINE # 95
0032 22 RET
; FUNCTION _ReadString_FromTuner (END)
; FUNCTION RadioInit (BEGIN)
; SOURCE LINE # 112
; SOURCE LINE # 113
; SOURCE LINE # 115
0000 E500 E MOV A,FM_AM_Select
0002 B40105 CJNE A,#01H,?C0020
; SOURCE LINE # 116
; SOURCE LINE # 118
0005 7500C2 E MOV ucRadioControl,#0C2H
; SOURCE LINE # 120
; SOURCE LINE # 123
; SOURCE LINE # 124
0008 8003 SJMP ?C0159
000A ?C0020:
; SOURCE LINE # 126
; SOURCE LINE # 128
C51 COMPILER V7.20 TUNER 07/16/2005 13:42:41 PAGE 18
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -