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

📄 radio.lst

📁 这是用W77E58编写的控制GSM模块
💻 LST
字号:
C51 COMPILER V6.23a  RADIO                                                                 08/20/2002 16:54:30 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE RADIO
OBJECT MODULE PLACED IN Radio.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Radio.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /* YuanGao electronic designe co.ldt
   2             (c) Copyright 2000,2001, All Rights Reserved  */
   3          
   4          #include "global.h"
   5          #include "util.h"
   6          #include "radio.h"
   7          #include "lcd.h"
   8          #include "mem9346.h"
   9          
  10          
  11          /*R3 to R0:*/
  12          #define   STEP_9KHZ        0x900000
  13          #define   STEP_25KHZ       0x320000
  14          
  15          #define   F50KHZ           25
  16          #define   F9KHZ             9
  17          
  18          #define   AM_531KHZ        531
  19          #define   AM_1621KHZ       1621
  20          #define   FM_87P5MHZ       87500
  21          #define   FM_108MHZ        108000
  22          
  23          #define   ADDR_IN1_MODE        0x28
  24          #define   ADDR_IN2_MODE        0x29
  25          #define   ADDR_OUT_MODE        0x2a
  26          
  27          #define   CTE_ENABLE           1
  28          
  29          
  30          unsigned long Divisor;       /*P0 to P15 */
  31              #define   AM_DIV_MIN          4              /* DVS SNS = 00 */
  32              #define   AM_DIV_MAX          4095           
  33              #define   SW_DIV_MIN          272            /* DVS SNS = 01 */
  34              #define   SW_DIV_MAX          65535
  35              #define   FM_DIV_MIN          272            /* DVS SNS = 1* */
  36              #define   FM_DIV_MAX          65535
  37          
  38          #define CPU_4M5HZ       0x00
  39          #define CPU_7M2HZ       0x08
  40          
  41          
  42          
  43          /*PLL fref:select the refrence frequency:by R0 to R3 */
  44          unsigned long           PLL_fref = STEP_25KHZ;
  45          
  46          
  47          unsigned char Band;
  48          unsigned char Chanel = 0;
  49          unsigned char Crystal;
  50          
  51          unsigned long address;
  52          
  53          
  54          bit bdata  STEREO_FLAG = 0;
  55          
C51 COMPILER V6.23a  RADIO                                                                 08/20/2002 16:54:30 PAGE 2   

  56          #define   SET_RADIO_CE         RADIO_CE     = HIGH
  57          #define   SET_RADIO_CL         RADIO_CL     = HIGH  
  58          #define   SET_RADIO_DI         RADIO_DI     = HIGH  
  59          #define   SET_RADIO_CS_TUN     RADIO_CS_TUN = HIGH  
  60          #define   SET_RADIO_FM_ST      RADIO_FM_ST  = HIGH  
  61          #define   SET_RADIO_MUTE       RADIO_MUTE   = HIGH  
  62          
  63          #define   CLEAR_RADIO_CE       RADIO_CE     = LOW  
  64          #define   CLEAR_RADIO_CL       RADIO_CL     = LOW  
  65          #define   CLEAR_RADIO_DI       RADIO_DI     = LOW  
  66          #define   CLEAR_RADIO_CS_TUN   RADIO_CS_TUN = LOW  
  67          #define   CLEAR_RADIO_FM_ST    RADIO_FM_ST  = LOW  
  68          #define   CLEAR_RADIO_MUTE     RADIO_MUTE   = LOW  
  69          
  70          
  71          
  72          void Radio_init(void)
  73          {                             
  74   1      
  75   1                   address = 0x11A000;             /* 0x100000 */
  76   1      
  77   1                   SET_RADIO_CL;
  78   1                   CLEAR_RADIO_CE;
  79   1                   CLEAR_RADIO_DI;
  80   1      
  81   1                   RADIO_write_address(ADDR_IN2_MODE);
  82   1                   RADIO_output_byte(0x11A180);             /* (AM/FM).FM = 11A180; (FM/AM).AM = 11A010 */
  83   1      
  84   1                   Program_Search();
  85   1      
  86   1                   RADIO_write_address(ADDR_IN1_MODE);
  87   1                   RADIO_output_byte(0x360922);                   /* 0x040000 */
  88   1      
  89   1      }
  90          
  91          
  92          bit   Program_Search(void)
  93          {
  94   1      
  95   1                   unsigned long VCO;
  96   1      
  97   1                   if(Band == AM_IN){
  98   2                      VCO = (Divisor+ 450)/F9KHZ;           /* F9KHZ = 9 */
  99   2                   }
 100   1                   else{                                    /* Band == FM_IN */
 101   2                      VCO = (Divisor+ 10700)/F50KHZ/2;      /* Divisor = 106200(106.2MHz) */
 102   2                   }                                        /* VCO(DEC=HEX) =0x000922 */
 103   1      
 104   1                   if(Band == AM_IN){
 105   2                      VCO <<= 4;
 106   2                      VCO = VCO|0x900000;    /*0x900000????? jy*/
 107   2                   } else {
 108   2                      VCO = PLL_fref|VCO;                      /* PLL_fref = STEP_25KHZ = 0x320000; */
 109   2                   }
 110   1                   RADIO_write_address(ADDR_IN1_MODE);
 111   1                   RADIO_output_byte(VCO);
 112   1      
 113   1                   RADIO_write_address(ADDR_IN1_MODE);
 114   1                   RADIO_output_byte(VCO | 0x040000);
 115   1      
 116   1                   if(!RADIO_TUNER_ON) return 1;
 117   1                   else return 0;
C51 COMPILER V6.23a  RADIO                                                                 08/20/2002 16:54:30 PAGE 3   

 118   1      
 119   1      }
 120          
 121          
 122          
 123          void Radio_Band(void)
 124          {
 125   1      
 126   1                if(Band == FM_IN) {
 127   2                   Band = AM_IN;
 128   2                   PLL_fref = STEP_9KHZ;
 129   2                   Divisor = AM_531KHZ;
 130   2      
 131   2                   RADIO_write_address(ADDR_IN2_MODE);
 132   2                   RADIO_output_byte(0x11A010);             /* (AM/FM).FM = 11A180; (FM/AM).AM = 11A010 */
 133   2      
 134   2                }
 135   1                else{
 136   2      
 137   2                   Band = FM_IN;
 138   2                   PLL_fref = STEP_25KHZ; 
 139   2                   Divisor = FM_87P5MHZ;
 140   2      
 141   2                   RADIO_write_address(ADDR_IN2_MODE);
 142   2                   RADIO_output_byte(0x11A180);             /* (AM/FM).FM = 11A180; (FM/AM).AM = 11A010 */
 143   2      
 144   2                }
 145   1      
 146   1      }
 147          
 148          
 149          void Radio_Divisor(unsigned char dir)
 150          {
 151   1      
 152   1                    if(dir){                                    /* auto search */
 153   2                       if(Band == AM_IN){
 154   3                          if(Divisor >= AM_1621KHZ) {
 155   4                             Divisor = AM_531KHZ;
 156   4                          }
 157   3                          else Divisor += F9KHZ;
 158   3                       }
 159   2                       else{                                   /* Band == FM_IN */
 160   3                          if(Divisor >= FM_108MHZ) {
 161   4                             Divisor = FM_87P5MHZ;
 162   4                          }
 163   3                          else Divisor += F50KHZ*2;
 164   3                       }
 165   2                    }
 166   1                    else{                                       /* no auto search */
 167   2                       if(Band == AM_IN){
 168   3                          if(Divisor <= AM_531KHZ) {
 169   4                             Divisor = AM_1621KHZ;
 170   4                          }
 171   3                          else Divisor -= F9KHZ;
 172   3                       }
 173   2                       else{
 174   3                          if(Divisor <= FM_87P5MHZ) {
 175   4                             Divisor = FM_108MHZ;
 176   4                          }
 177   3                          else Divisor -= F50KHZ*2;
 178   3                       }
 179   2      
C51 COMPILER V6.23a  RADIO                                                                 08/20/2002 16:54:30 PAGE 4   

 180   2                    }
 181   1      }
 182          
 183          
 184          #if 0
              void Radio_FM_on(unsigned char FMAM)
              {
                     if(FMAM){                  /*BO4*/
                     
                        address &= 0xFFFF0F;
                        address |= 0x000080;
                      
                     }else
                      
                        address &= ~0x000080;
                      
                     RADIO_write_address(ADDR_IN2_MODE);
                     RADIO_output_byte(address);
              }
              #endif
 200          
 201          
 202          /***********************************************************************
 203          *                        LC72130 input/output byte command             *
 204          *                                                                      *
 205          ************************************************************************/
 206          void RADIO_write_address(unsigned char RADIO_addr)
 207          {
 208   1              unsigned char i;
 209   1              for(i=0;i<8;i++){
 210   2      
 211   2      
 212   2                  if( RADIO_addr & 0x01)
 213   2                      SET_RADIO_DI;
 214   2                  else 
 215   2                      CLEAR_RADIO_DI;
 216   2      
 217   2                  CLEAR_RADIO_CL;
 218   2                  CLEAR_RADIO_CL;
 219   2                  RADIO_addr >>= 1;
 220   2                  SET_RADIO_CL;
 221   2      
 222   2              }
 223   1      
 224   1      }
 225          
 226          
 227          void RADIO_output_byte(unsigned long RADIO_data)
 228          {
 229   1              unsigned char i;
 230   1              SET_RADIO_CE;
 231   1      
 232   1              for(i=0; i<24; i++){
 233   2                if( RADIO_data & 0x01)
 234   2                  SET_RADIO_DI;
 235   2                else 
 236   2                  CLEAR_RADIO_DI;
 237   2                  CLEAR_RADIO_CL;
 238   2                  CLEAR_RADIO_CL;
 239   2                  RADIO_data >>= 1;
 240   2                  SET_RADIO_CL;
 241   2              }
C51 COMPILER V6.23a  RADIO                                                                 08/20/2002 16:54:30 PAGE 5   

 242   1              CLEAR_RADIO_CE;
 243   1      
 244   1      }
 245          
 246          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    602    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     15       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -