📄 tea5767test.lst
字号:
C51 COMPILER V7.08 TEA5767TEST 09/09/2008 15:01:13 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE TEA5767TEST
OBJECT MODULE PLACED IN TEA5767test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TEA5767test.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X55.H>
2 #include "wbtest.h"
3 #include "COM.h"
4 //----------------------------------------------------
5 #include "iic.h"
6 #define max_freq 108000
7 #define min_freq 87500
8 unsigned char radio_write_data[5]={0x29,0xc2,0x20,0x11,0x00};
9 //要写入TEA5767的数据
10 unsigned char radio_read_data[5]; //TEA5767读出的状态
11 unsigned int pll;
12 unsigned long frequency;
13 unsigned int default_pll=0x29c2;//0x29f9; //默认存台的pll,87.8MHz
14 //unsigned int max_pll=0x339b; //108MHz时的pll,
15 //unsigned int min_pll=9000; //70MHz时的pll
16 //------------------------------------------------------------
17 void radio_write(void);
18 void radio_read(void);
19 void get_pll(void);
20 void get_frequency(void);
21 void search(bit mode);
22 void auto_search(bit mode);
23 //------------------------------------------------------------
24 void radio_write(void)
25 {
26 1 unsigned char i;
27 1 iic_start();
28 1 iic_write8bit(0xc0); //TEA5767写地址
29 1 if(!iic_testack())
30 1 {
31 2 for(i=0;i<5;i++)
32 2 {
33 3 iic_write8bit(radio_write_data[i]);
34 3 iic_ack();
35 3 }
36 2 }
37 1 iic_stop();
38 1 }
39 //--------------------------------------------------------------
40 //读TEA5767状态,并转换成频率
41 void radio_read(void)
42 {
43 1 unsigned char i;
44 1 unsigned char temp_l,temp_h;
45 1 pll=0;
46 1 iic_start();
47 1 iic_write8bit(0xc1); //TEA5767读地址
48 1 if(!iic_testack())
49 1 {
50 2 for(i=0;i<5;i++)
51 2 {
52 3 radio_read_data[i]=iic_read8bit();
53 3 iic_ack();
54 3 }
55 2 }
C51 COMPILER V7.08 TEA5767TEST 09/09/2008 15:01:13 PAGE 2
56 1 iic_stop();
57 1 temp_l=radio_read_data[1];
58 1 temp_h=radio_read_data[0];
59 1 temp_h&=0x3f;
60 1 pll=temp_h*256+temp_l;
61 1 get_frequency();
62 1 }
63 //----------------------------------------------------------------
64 //由频率计算PLL
65 void get_pll(void)
66 {
67 1 unsigned char hlsi;
68 1 unsigned int twpll=0;
69 1
70 1 hlsi=radio_write_data[2]&0x10;
71 1 if (hlsi)
72 1 pll=(unsigned int)((float)((frequency+225)*4)/(float)32.768);
73 1 //频率单位:k
74 1 else
75 1 pll=(unsigned int)((float)((frequency-225)*4)/(float)32.768);
76 1 //频率单位:k
77 1 }
78 //----------------------------------------------------------------
79 //由PLL计算频率
80 void get_frequency(void)
81 {
82 1 unsigned char hlsi;
83 1 unsigned int npll=0;
84 1
85 1 npll=pll;
86 1 hlsi=radio_write_data[2]&0x10;
87 1 if (hlsi)
88 1 frequency=(unsigned long)((float)(npll)*(float)8.192-225); //频率单位:KHz
89 1 else
90 1 frequency=(unsigned long)((float)(npll)*(float)8.192+225); //频率单位:KHz
91 1 }
92 //------------------------------------------------------------------------------------
93 //手动设置频率,mode=1,+0.1MHz; mode=0:-0.1MHz ,不用考虑TEA5767用于搜台的相关位:SM,SUD
94 void search(bit mode)
95 {
96 1 radio_read();
97 1 if(mode)
98 1 {
99 2 frequency+=100;
100 2 if(frequency>max_freq)
101 2 frequency=min_freq;
102 2 }
103 1 else
104 1 {
105 2 frequency-=100;
106 2 if(frequency<min_freq)
107 2 frequency=max_freq;
108 2 }
109 1 get_pll();
110 1 radio_write_data[0]=pll/256;
111 1 radio_write_data[1]=pll%256;
112 1 radio_write_data[2]=0x20;
113 1 radio_write_data[3]=0x11;
114 1 radio_write_data[4]=0x00;
115 1 radio_write();
116 1 }
117 //--------------------------------------------------------------------
C51 COMPILER V7.08 TEA5767TEST 09/09/2008 15:01:13 PAGE 3
118 //自动搜台,mode=1,频率增加搜台; mode=0:频率减小搜台,不过这个好像不能循环搜台
119 void auto_search(bit mode)
120 {
121 1 radio_read();
122 1 get_pll();
123 1 if(mode) radio_write_data[2]=0xa0;
124 1 else radio_write_data[2]=0x20;
125 1
126 1 radio_write_data[0]=pll/256+0x40;
127 1 radio_write_data[1]=pll%256;
128 1 radio_write_data[3]=0x11;
129 1 radio_write_data[4]=0x00;
130 1 radio_write();
131 1
132 1 radio_read();
133 1 while(!(radio_read_data[0]&0x80)) //搜台成功标志
134 1 {
135 2 radio_read();
136 2 //disp_freq(9,1);
137 2 Blink(5,3);
138 2 while(KEY1);
139 2 }
140 1 }
141 //----------------------------------------------------------
142 void SetFrequency(void)
143 {
144 1 get_pll();
145 1 radio_write_data[0]=pll/256;
146 1 radio_write_data[1]=pll%256;
147 1 radio_write_data[2]=0x20;
148 1 radio_write_data[3]=0x11;
149 1 radio_write_data[4]=0x00;
150 1 radio_write();
151 1 }
152 //----------------------------------------------------------
153 //##########################################################
154 //----------------------------------------------------------
155 void main(void)
156 {
157 1 unsigned long step;
158 1
159 1 Init_Com();
160 1 SendString("Hello,CUST!---FM TEA5767");CT();
161 1
162 1 frequency=91500000;
163 1 step=100000;
164 1 SetFrequency();
165 1 SendNumb((frequency/100000),4);CT();
166 1
167 1 Blink(3,3);
168 1
169 1 frequency=88000000;
170 1
171 1 for(;;)
172 1 {
173 2
174 2 if(KEY3==0);
175 2 {
176 3 Blink(1,1);
177 3 if(KEY3==0)
178 3 {
179 4 Blink(1,1);
C51 COMPILER V7.08 TEA5767TEST 09/09/2008 15:01:13 PAGE 4
180 4 frequency+=step;
181 4 SetFrequency();
182 4 //SendNumbLong(frequency);CT();
183 4 SendNumb((frequency/100000),4);CT();
184 4 }
185 3 }
186 2 if(KEY4==0);
187 2 {
188 3 Blink(1,1);
189 3 if(KEY4==0)
190 3 {
191 4 Blink(1,1);
192 4 frequency-=step;
193 4 SetFrequency();
194 4 //SendNumbLong(frequency);CT();
195 4 SendNumb((frequency/100000),4);CT();
196 4 }
197 3 }
198 2
199 2 /*
200 2 while(KEY3);
201 2 {
202 2 Blink(1,3);
203 2 frequency+=step;
204 2 SetFrequency();
205 2 //SendNumbLong(frequency);CT();
206 2 SendNumb((frequency/100000),4);CT();
207 2 }
208 2 */
209 2
210 2 Blink(5,1);
211 2 }
212 1 //while(KEY3);
213 1
214 1 //auto_search(1);
215 1
216 1 //for(;;) Blink(1,1);
217 1 }
218 //----------------------------------------------------------
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1408 ----
CONSTANT SIZE = 25 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 19 32
IDATA SIZE = ---- ----
BIT SIZE = ---- 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -