📄 key.lst
字号:
C51 COMPILER V7.01 KEY 08/17/2003 17:24:41 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN .\key.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE .\key.c LARGE MODDP2 DEBUG OBJECTEXTEND
stmt level source
1 #include <w77e58.h>
2 #include <stdio.h>
3 #include "struct.h"
4 #include "china_ch.h"
5 #include<intrins.h>
6
7 #define ch_64 128//存储频道地址
8 #define ch_cun 10//存储总频道数地址
9
10 #define DEBUG 1
11 char menu_cr1;//菜单位置1
12 char menu_cr2;//菜单位置2
13
14
15 unsigned char chanle;//当前使用频道值
16 unsigned char chan_le;//存储总频道数
17 extern unsigned char pos;//当前节目
18 extern unsigned char sound;//当前节目声音中频
19 extern unsigned char tv_av;//tv/av
20 extern unsigned char slep;//静音
21 extern unsigned char band;////波段
22
23 void daya1(unsigned long i);
24 extern void menu_main( char r);
25 extern void av_menu( char r);//tv/av1/av2/av3
26 extern void vol_main( char r);//
27 extern void vol_av( char r);
28 extern void jintu(unsigned int r,unsigned int l,
29 unsigned int h, unsigned int op);//进度条
30
31 extern void osd_start0();
32 extern void osd_start1();
33 extern void osd_start2();//无信号时 小字符
34 extern void osd_start3();//有信号时 小字符
35
36 extern void delay1(unsigned int i);
37 extern void wirte_24c64(unsigned int address,unsigned char fb[],unsigned char su);
38 extern void wirte_24c64a(unsigned int address,unsigned char fb);
39 extern void read_24c64(unsigned int address,unsigned char fb[],unsigned char su);//多字节读
40 extern unsigned char i2c_reada(unsigned int address);//单字节读
41 extern void tuning_start();//调谐器初始化
42 extern void tuning_freq(tv ch);//调到频道
43 extern void tda9886_set(av sou);
44 void ret_ch(ret_s dv,unsigned char xh);//保存有信号频道
45 void tuning_cun(unsigned char i);//调谐到预定频道
46
47 void key_menu();
48 bit key1();//菜单
49 bit key2();//-
50 bit key3();//+
51 bit key4();//开关机
52
53 extern bit pal_ntsc();
54 extern bit p_n;//P/N标志
55 extern void osd_starta();
C51 COMPILER V7.01 KEY 08/17/2003 17:24:41 PAGE 2
56 extern void osd_startb();
57 extern void tongxin_rxd();//接收下传命令
58 void tune_a();//进入自动选台
59 void tune_b();//进入手动选台
60 void weitiao();//进入微调
61 void exit();//退出菜单
62 void band_s();//波段
63 void vol_off();//进入静音
64 void posa();//节目
65 void sound_select();//进入声音中频调节
66 void tv_av_select();//进入TV/AV1/AV2
67
68
69
70
71 sbit key1_menu=P3^4;
72 sbit key2_up=P3^5;
73 sbit key3_np=P3^6;
74 sbit key4_pow=P3^7;
75 sbit signal= P1^2;//信号检测
76
77 void key_menu()
78 {
79 1 if(key1())//进入1级设置菜单--图象
80 1 { menu_cr1=0;//菜单位置1
81 2 menu_cr2=0;//菜单位置2
82 2 chanle=0;
83 2 if(signal)
84 2 {
85 3 pal_ntsc();
86 3 if(p_n)
87 3 osd_start3();
88 3 else osd_startb();
89 3 }
90 2 else osd_start2();
91 2
92 2 menu_main(0);//显示菜单
93 2 vol_main(0);
94 2 jintu(chanle,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
95 2 #if(DEBUG)
96 2 printf("菜单 1\n");
97 2 #endif
98 2 while(1)
99 2 {
100 3 if(key3())//+
101 3 {
102 4 menu_cr1++;
103 4 if(menu_cr1>4)
104 4 menu_cr1=0;
105 4 menu_main(menu_cr1);
106 4 vol_main(menu_cr1);
107 4 jintu(chanle,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
108 4 }
109 3 if(key2())//-
110 3 {
111 4 menu_cr1--;
112 4 if(menu_cr1<0)
113 4 menu_cr1=4;
114 4 menu_main(menu_cr1);
115 4 vol_main(menu_cr1);
116 4 jintu(chanle,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
117 4 }
C51 COMPILER V7.01 KEY 08/17/2003 17:24:41 PAGE 3
118 3
119 3 if(key4())//选择运行调节
120 3 {
121 4 switch(menu_cr1)
122 4 {
123 5 case 0: posa();break;//节目
124 5 case 1: band_s();break;//波段
125 5 case 2: tune_a();exit();return;//进入自动选台
126 5 break;
127 5 case 3: tune_b(); break;// 进入手动选台
128 5 case 4: weitiao();//进入微调
129 5 break;
130 5 default:;
131 5 }
132 4 }
133 3
134 3 /**********************/
135 3 if(key1())//第2级菜单
136 3 {
137 4 if(signal)
138 4 {
139 5 pal_ntsc();
140 5 if(p_n)
141 5 osd_start3();
142 5 else osd_startb();
143 5 }
144 4 else osd_start2();
145 4 av_menu(0);
146 4 vol_av(0);
147 4
148 4 while(1)
149 4 {
150 5 if(key3())//+
151 5 {
152 6 menu_cr2++;
153 6 if(menu_cr2>2)
154 6 menu_cr2=0;
155 6 av_menu(menu_cr2);
156 6 vol_av(menu_cr2);
157 6 }
158 5 if(key2())//-
159 5 {
160 6 menu_cr2--;
161 6 if(menu_cr2<0)
162 6 menu_cr2=2;
163 6 av_menu(menu_cr2);
164 6 vol_av(menu_cr2);
165 6 }
166 5 if(key4())
167 5 {
168 6 switch(menu_cr2)
169 6 {
170 7 case 0: sound_select();//进入声音中频调节
171 7 break;
172 7 case 1: tv_av_select();//进入TV/AV1/AV2
173 7 break;
174 7 case 2: vol_off();//进入静音
175 7 break;
-
176 7 default:;
177 7 }
178 6 }
C51 COMPILER V7.01 KEY 08/17/2003 17:24:41 PAGE 4
179 5 if(key1())//退出菜单
180 5 {
181 6 exit();
182 6 return;
183 6 }
184 5 }
185 4 }
186 3 /**********************/
187 3
188 3
189 3 }
190 2
191 2 }
192 1 }
193
194 void tune_a()//进入自动选台
195 {
196 1 unsigned char i;
197 1 unsigned int h;
198 1 tv ac;
199 1 ret_s hv;
200 1 av as;
201 1
202 1 chanle=0;
203 1 chan_le=0;//储存频道数清除
204 1 as.f_vif=china_ch.pic_if;
205 1 as.off_audio=slep;
206 1 as.sound_freq=sound;
207 1 tda9886_set(as);
208 1 for(i=0;i<china_ch.opn;i++)
209 1 {
210 2 jintu(i,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
211 2 ac.f_if2=china_ch.cen_if2;
212 2 ac.f_step=china_ch.fsteps;
213 2 ac.fif_bw=china_ch.f_ifbwith;
214 2 ac.rf=china_ch.chan[i].cennter_freq;
215 2 tuning_freq(ac);//调到频道
216 2 daya1(10000);
217 2 #if(DEBUG)
218 2 h=i;
219 2 printf("自动选台 i=%u\n",h);
220 2
221 2 #endif
222 2 if(signal)
223 2 {
224 3 if(pal_ntsc())
225 3 {
226 4 hv.country=1;
227 4 hv.chh=i;
228 4 hv.sound_freqf=sound;
229 4
230 4 hv.rff=china_ch.chan[i].cennter_freq;
231 4 hv.low_freqf=china_ch.chan[i].low_freq;
232 4 hv.up_freqf=china_ch.chan[i].up_freq;
233 4
234 4 hv.pic_if=china_ch.pic_if;
235 4 hv.f_iff2=china_ch.cen_if2;
236 4 hv.fif2_bw=china_ch.f_ifbwith;
237 4 hv.f_stepf=china_ch.fsteps;
238 4 ret_ch(hv,chanle);//保存有信号频道
239 4 #if(DEBUG)
240 4 printf("有信号 i=%u,中心频率=%f\n",h,hv.rff);
C51 COMPILER V7.01 KEY 08/17/2003 17:24:41 PAGE 5
241 4
242 4 #endif
243 4 chanle++;
244 4 }
245 3 }
246 2 }
247 1 chan_le=chanle;
248 1 wirte_24c64a(ch_cun,chan_le);//保存有信号总频道数
249 1 chanle=0;
250 1 tuning_cun(chanle);//调谐到预定频道
251 1
252 1
253 1 #if(DEBUG)
254 1 printf("自动选台完成\n ");
255 1 #endif
256 1 }
257
258 void tune_b()//进入手动选台
259 {
260 1 unsigned char i;
261 1 unsigned int f;
262 1 tv ac;
263 1 i=0;
264 1 while(1)
265 1 {
266 2 if(key3())//+
267 2 {
268 3 i++;
269 3 if(i>china_ch.opn)
270 3 i=0;
271 3 jintu(i,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
272 3 ac.f_if2=china_ch.cen_if2;
273 3 ac.f_step=china_ch.fsteps;
274 3 ac.fif_bw=china_ch.f_ifbwith;
275 3 ac.rf=china_ch.chan[i].cennter_freq;
276 3 tuning_freq(ac);//调到频道
277 3
278 3 #if(DEBUG)
279 3 f=i;
280 3 printf("手动选台 i=%u, 中心频率=%f\n",f,china_ch.chan[i].cennter_freq);
281 3 #endif
282 3 }
283 2 if(key2())//-
284 2 {
285 3 i--;
286 3 if(i>china_ch.opn)
287 3 i=china_ch.opn;
288 3 jintu(i,china_ch.vhf_l,china_ch.vhf_h,china_ch.opn);
289 3 ac.f_if2=china_ch.cen_if2;
290 3 ac.f_step=china_ch.fsteps;
291 3 ac.fif_bw=china_ch.f_ifbwith;
292 3 ac.rf=china_ch.chan[i].cennter_freq;
293 3 tuning_freq(ac);//调到频道
294 3 #if(DEBUG)
295 3 f=i;
296 3 printf("手动选台 i=%u, 中心频率=%f\n",f,china_ch.chan[i].cennter_freq);
297 3 #endif
298 3 }
299 2 if(key4())
300 2 return;
301 2 }
302 1 }
C51 COMPILER V7.01 KEY 08/17/2003 17:24:41 PAGE 6
303 void weitiao()//进入微调
304 {
305 1 av as;
306 1 #if(DEBUG)
307 1 printf("key 3\n");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -