📄 main.lst
字号:
223 1 }
224 /********************************以下为键盘子程序*******************************************/
225 void key_delay(void) //按键延时25Ms
226 {
227 1 uchar i; uint j;
228 1 for(i=0;i<50;i++)
229 1 {
230 2 for(j=0;j<2000;j++)
231 2 {
232 3 _nop_();
233 3 }
234 2 }
235 1 }
236 //-----------------------------------------按键功能;
237 void key_1(void){line[p++]='1';lcd_write_da('1');have_data=1;}
238 void key_2(void){line[p++]='2';lcd_write_da('2');have_data=1;}
239 void key_3(void){line[p++]='3';lcd_write_da('3');have_data=1;}
240 void key_4(void){line[p++]='4';lcd_write_da('4');have_data=1;}
241 void key_5(void){line[p++]='5';lcd_write_da('5');have_data=1;}
C51 COMPILER V8.01 MAIN 12/07/2007 20:43:05 PAGE 5
242 void key_6(void){line[p++]='6';lcd_write_da('6');have_data=1;}
243 void key_7(void){line[p++]='7';lcd_write_da('7');have_data=1;}
244 void key_8(void){line[p++]='8';lcd_write_da('8');have_data=1;}
245 void key_9(void){line[p++]='9';lcd_write_da('9');have_data=1;}
246 void key_0(void){line[p++]='0';lcd_write_da('0');have_data=1;}
247 void key_up(void)
248 {
249 1 lcd_write_ins(0x0c);
250 1 up_down=up_down-1;
251 1 if(up_down==0){up_down=4;}
252 1 switch(up_down)
253 1 {
254 2 case 1:{fan(1,1,16);}break;
255 2 case 2:{fan(1,2,16);}break;
256 2 case 3:{fan(1,3,16);}break;
257 2 case 4:{fan(1,4,16);}break;
258 2 default:{}
259 2 }
260 1 }
261
262 void key_point(void){line[p++]='.';lcd_write_da('.');have_data=1;}
263 void key_13(void){}
264 void key_right(void){}
265 void key_enter(void)
266 {
267 1 if(up_down==1)
268 1 {
269 2 if(have_data==0)
270 2 {
271 3 lcd_write_ins(0x01);
272 3 lcd_show(1,1,fre_mode_tab1);
273 3 lcd_show(1,2,fre_mode_tab2);
274 3 lcd_show(1,3,fre_mode_tab3);
275 3 lcd_show(1,4,fre_mode_tab4);
276 3 lcd_write_ins(0x98);
277 3 }
278 2 else
279 2 {
280 3 send_dds_data();
281 3 }
282 2 }
283 1 else if(up_down==2)
284 1 {
285 2 lcd_write_ins(0x01);
286 2 lcd_show(1,1,am_mode_tab1);
287 2 lcd_write_ins(0x88);
288 2 }
289 1 else if(up_down==3)
290 1 {
291 2 lcd_write_ins(0x01);
292 2 lcd_show(1,1,pa_sk_mode_tab1);
293 2 lcd_show(1,2,pa_sk_mode_tab2);
294 2 lcd_write_ins(0x90);
295 2 }
296 1 else if(up_down==4)
297 1 {
298 2 lcd_write_ins(0x01);
299 2 lcd_show(1,1,fm_mode_tab1);
300 2 lcd_write_ins(0x88);
301 2 }
302 1 }
303 void key_left(void){}
C51 COMPILER V8.01 MAIN 12/07/2007 20:43:05 PAGE 6
304 void key_17(void){}
305 void key_18(void){}
306 void key_down(void)
307 {
308 1 lcd_write_ins(0x0c);
309 1 up_down=up_down+1;
310 1 if(up_down==5){up_down=1;}
311 1 switch(up_down)
312 1 {
313 2 case 1:{fan(1,1,16);}break;
314 2 case 2:{fan(1,2,16);}break;
315 2 case 3:{fan(1,3,16);}break;
316 2 case 4:{fan(1,4,16);}break;
317 2 default:{}
318 2 }
319 1 }
320 void key_return(void)
321 {
322 1 lcd_write_ins(0x01);
323 1 lcd_show(1,1,fre);
324 1 lcd_show(1,2,am);
325 1 lcd_show(1,3,pa_sk);
326 1 lcd_show(1,4,fm);
327 1 fan(1,up_down,16);
328 1 }
329 //-------------------------------------------按键辩别;
330 void argue(uchar num)
331 {
332 1 if(num!=0xff)
333 1 {
334 2 switch(num)
335 2 {
336 3 case 1:{key_1();}break;
337 3 case 2:{key_2();}break;
338 3 case 3:{key_3();}break;
339 3 case 4:{key_4();}break;
340 3 case 5:{key_5();}break;
341 3 case 6:{key_6();}break;
342 3 case 7:{key_7();}break;
343 3 case 8:{key_8();}break;
344 3 case 9:{key_9();}break;
345 3 case 10:{key_0();}break;
346 3 case 11:{key_up();}break;
347 3 case 12:{key_point();}break;
348 3 case 13:{key_13();}break;
349 3 case 14:{key_right();}break;
350 3 case 15:{key_enter();}break;
351 3 case 16:{key_left();}break;
352 3 case 17:{key_17();}break;
353 3 case 18:{key_18();}break;
354 3 case 19:{key_down();}break;
355 3 case 20:{key_return();}break;
356 3 default:{}
357 3 }
358 2 }
359 1 }
360 //-------------------------------------------------按键扫描;
361 uchar first_line(void) //扫描第一行;
362 {
363 1 if(key_port0|key_port1==0) {key_delay();return(1);}
364 1 else if(key_port0|key_port2==0) {key_delay();return(2);}
365 1 else if(key_port0|key_port3==0) {key_delay();return(3);}
C51 COMPILER V8.01 MAIN 12/07/2007 20:43:05 PAGE 7
366 1 else if(key_port0|key_port4==0) {key_delay();return(4);}
367 1 else return(0xff);
368 1 }
369 uchar second_line(void) //扫描第二行;
370 {
371 1 if(key_port1|key_port0==0) {key_delay();return(5);}
372 1 else if(key_port1|key_port2==0) {key_delay();return(6);}
373 1 else if(key_port1|key_port3==0) {key_delay();return(7);}
374 1 else if(key_port1|key_port4==0) {key_delay();return(8);}
375 1 else return(0xff);
376 1 }
377 uchar third_line(void) //扫描第三行;
378 {
379 1 if(key_port2| key_port0==0) {key_delay();return(9);}
380 1 else if(key_port2|key_port1==0) {key_delay();return(10);}
381 1 else if(key_port2|key_port3==0) {key_delay();return(11);}
382 1 else if(key_port2|key_port4==0) {key_delay();return(12);}
383 1 else return(0xff);
384 1 }
385 uchar four_line(void) //扫描第四行;
386 {
387 1 if(key_port3|key_port0==0) {key_delay();return(13);}
388 1 else if(key_port3|key_port1==0) {key_delay();return(14);}
389 1 else if(key_port3|key_port2==0) {key_delay();return(15);}
390 1 else if(key_port3|key_port4==0) {key_delay();return(16);}
391 1 else return(0xff);
392 1 }
393 uchar five_line(void) //扫描第五行;
394 {
395 1 if(key_port4|key_port0==0) {key_delay();return(17);}
396 1 else if(key_port4|key_port1==0) {key_delay();return(18);}
397 1 else if(key_port4|key_port2==0) {key_delay();return(19);}
398 1 else if(key_port4|key_port3==0) {key_delay();return(20);}
399 1 else return(0xff);
400 1 }
401 //-------------------------------------------键盘入口;
402 void key_board(void)
403 {
404 1 uchar num;
405 1 while(1)
406 1 {
407 2 key_port0=0;
408 2 num=first_line();
409 2 argue(num);
410 2 key_port0=1;key_port1=0;
411 2 num=second_line();
412 2 argue(num);
413 2 key_port1=1;key_port2=0;
414 2 num=third_line();
415 2 argue(num);
416 2 key_port2=1;key_port3=0;
417 2 num=four_line();
418 2 argue(num);
419 2 key_port3=1;key_port4=0;
420 2 num=five_line();
421 2 argue(num);
422 2 key_port4=1;
423 2 }
424 1 }
425 //-------------------------------------
426 main()
427 {
C51 COMPILER V8.01 MAIN 12/07/2007 20:43:05 PAGE 8
428 1 lcd_begin();
429 1 lcd_show(1,1,fre);
430 1 lcd_show(1,2,am);
431 1 lcd_show(1,3,pa_sk);
432 1 lcd_show(1,4,fm);
433 1 fan(1,1,16);
434 1 key_board();
435 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1858 ----
CONSTANT SIZE = 213 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 17
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -