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

📄 radio.lst

📁 LC72131完整程序
💻 LST
字号:
C51 COMPILER V8.02   RADIO                                                                 06/25/2007 21:40:11 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE RADIO
OBJECT MODULE PLACED IN radio.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE radio.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #define uchar unsigned char
   2          #define uint  unsigned int
   3          #define ulong unsigned long
   4          #include <reg52.h>
   5          #include <absacc.h>
   6          #include "mylib.h"
   7          #define fm 0
   8          #define am 1
   9          #define inc 1
  10          #define dec 0
  11          extern uchar remkey;     //定义功能数据,改变它的有遥控程序和按键程序
  12          uchar tai;                               //显示的台号
  13          bit band; uchar ab=0;    //目前波段标志
  14          ulong e=4;                               
  15          uchar i=4;                              
  16          uchar b[2];                             //I2C发送缓冲
  17          uchar a[2];                         //I2C接收缓冲
  18          main()
  19          {
  20   1      delay(100);
  21   1      in0.in0.frq=0x6410;//初始华调频频率为南阳人民广播电台
  22   1      band=fm;                   //初始化波段为调频
  23   1      inivfd();                  //初始化VFD显示
  24   1      remkey=0xc7;
  25   1      while(1)
  26   1        {
  27   2        while(rdkey());               //将键盘检测放到主循环中,得到的结果放在remkey,
  28   2        if(remkey==0xc7)                                       
  29   2           band_step(inc);    //向前步进一个电台频率                                          
  30   2        else if(remkey==0x47)
  31   2           band_step(dec);    //退后一个电台频率                               
  32   2        else if(remkey==0x87)                          
  33   2           band_change();             //调频调幅转换
  34   2        else if(remkey==0x57)
  35   2           station_search();  //自动搜索所有频道电台,并存储到24C02。
  36   2        else if(remkey==0xf7)
  37   2          station_change(inc);//调出搜到的电台,并使电台号加1指向下一个存储的电台
  38   2        else if(remkey==0x77)
  39   2          station_change(dec);//调出搜到的电台,并使电台号减1指向上一个存储的电台
  40   2        }
  41   1      }
  42          void display(void)              //在VFD上显示目前频率和当前的台号
  43           {
  44   1         if(in1.in1.band==am)
  45   1            vfddigit(swdata(in0.in0.frq<<4)*5-450);//调频波段电台实际频率和写入锁相环的算法
  46   1         else
  47   1            vfddigit(swdata(in0.in0.frq)/2-107);       //调幅波段电台实际频率和写入锁相环的算法
  48   1       }
  49          void band_step(bit direction)                            //频率步进调幅5KHZ/STEP 调频50HZ/STEP
  50           {
  51   1           iniband();
  52   1           iniband1(band);
  53   1           e=stepserch(direction,in0.in0.frq);        //根据形参 direction 决定步进方向
  54   1           display();
  55   1           remkey=0x00;
C51 COMPILER V8.02   RADIO                                                                 06/25/2007 21:40:11 PAGE 2   

  56   1       }
  57           void band_change(void)                                   //波段换函数
  58            {    
  59   1           band=~band;                                                  //初始化波段公共部分
  60   1               iniband();                                                       
  61   1               if(band==fm)
  62   1                 in0.in0.frq=0x6410;                            //如果是调频调出最低端电台87MHZ
  63   1               else
  64   1                 in0.in0.frq=0x0330;                            //如果是调幅调出最低端电台575KHZ
  65   1           iniband1(band);                                      //初始化具体波段的私有部分
  66   1           e=stepserch(1,in0.in0.frq);                  //加载频率
  67   1           display();                                                   //更新显示
  68   1               remkey=0x00;
  69   1        }
  70          
  71           void station_change(bit direction)              //调出已经存储的电台并设置为当前电台
  72            {      
  73   1           if(direction)
  74   1                 tai++;
  75   1               else
  76   1                 tai--;
  77   1           rdnbyt(0xa0,tai*2,2,a);                     //经过IIC总线调出硬件地址为0XA0,子地址为tai*2的24C02中的数据高第一字节放

⌨️ 快捷键说明

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