⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tuner.lst

📁 一个带收音的功放程序, VFD显示驱动用一个非常实用的方法, 稍加修改即可换成不同的VFD, 功放芯片用M61538
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -