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

📄 radio.lst

📁 数字选台收音机
💻 LST
字号:
C51 COMPILER V6.14  RADIO                                                                  03/17/2008 21:08:26 PAGE 1   


C51 COMPILER V6.14, COMPILATION OF MODULE RADIO
OBJECT MODULE PLACED IN .\radio.OBJ
COMPILER INVOKED BY: C:\Program Files\C51\BIN\C51.EXE .\radio.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #define uchar unsigned char
   2          #define uint  unsigned int
   3          #define ulong unsigned long
   4          #include <reg51.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 V6.14  RADIO                                                                  03/17/2008 21:08:26 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 + -