📄 radio.lst
字号:
C51 COMPILER V7.10 RADIO 03/27/2005 22:39:52 PAGE 1
C51 COMPILER V7.10, 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 V7.10 RADIO 03/27/2005 22:39:52 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 + -