📄 yk1602.lst
字号:
275 1 while( DATAPORT & busy );
276 1
277 1 Elcm = 0;
278 1 }
279
280
281
282
283
284
285 // 短延时
286 void delay5ms(void)
287 {
288 1 uint i = 5552;
289 1 while(i--);
290 1 }
291
292 //长延时
293 void delay400ms(void)
294 {
295 1 uchar i = 5;
296 1 uint j;
297 1 while(i--)
298 1 {
299 2 j=7269;
300 2 while(j--);
301 2 };
302 1 }
303
C51 COMPILER V7.07 YK1602 09/08/2006 10:12:13 PAGE 6
304
305 /*-------延时---------------*/
306 void delay(void){
307 1 int r;
308 1 int e;
309 1 for(r=0;r<500;r++)
310 1 { /*外层循环*/
311 2 _nop_ ();
312 2 _nop_ ();
313 2 _nop_ ();
314 2 for(e=0;e<3;e++)
315 2 { /*内层循环*/
316 3 _nop_ ();
317 3 _nop_ ();
318 3 _nop_ ();
319 3 _nop_ ();
320 3 _nop_ ();
321 3 }
322 2 }
323 1 }
324
325 /*----------功能键识别子程序--------------*/
326 void acct_1(void){
327 1
328 1 tf: _nop_();
329 1 if(menu)
330 1 {
331 2 menu=0;
332 2 conh++;
333 2 if(conh==3) conh=0;
334 2 }
335 1
336 1
337 1 if(conh==1)
338 1 {
339 2 key_hit(min); //低位设置
340 2 conv();
341 2 disp1(3,0);
342 2 delay();
343 2 }
344 1 if(conh==2)
345 1 {
346 2 key_hit(hour); //高位设置
347 2 conv();
348 2 disp1(3,0);
349 2 delay();
350 2
351 2 }
352 1 /* if(conh==3){key_hit(thtl) //显示高位,低位
353 1 conv();
354 1
355 1
356 1 delay();
357 1 delay();
358 1 delay();
359 1 delay();
360 1 delay();
361 1 }
362 1 if(conh==4){key_hit(save);
363 1 conv();
364 1 disp();
365 1 delay();
C51 COMPILER V7.07 YK1602 09/08/2006 10:12:13 PAGE 7
366 1
367 1 }*/
368 1 yk();
369 1 if(!conh==0) goto tf; /*功能设置完毕?未设置则继续执行功能键处理*/
370 1 }
371
372
373 /*-----------加减键处理子程序-------------*/
374 /*按键处理*/
375 void key_hit(unsigned char add3)
376 {
377 1 if(dw){
378 2 dw=0; /*减键*/
379 2 add3--;
380 2 if(add3>=60) add3=0;
381 2 if(conh==1) min=add3;
382 2 if(conh==2) hour=add3;
383 2 conv();
384 2 disp1(3,0);
385 2 }
386 1
387 1 if(up){ /*加键*/
388 2 up=0; /*减键*/
389 2 add3++;
390 2 if(add3==60) add3=0;
391 2 if(conh==1) min=add3;
392 2 if(conh==2) hour=add3;
393 2 conv();
394 2 disp1(3,0);
395 2
396 2 }
397 1
398 1
399 1 if(conh==1) min=add3;
400 1 if(conh==2) hour=add3;
401 1
402 1 }
403
404
405 //遥控码识别
406 void yk(void){
407 1 if(temp2==0xe2){
408 2 if(temp4==0xf1){
409 3 if(temp3==0x2c){
410 4 if(temp5==0x16){ //功能键
411 5 menu=1;
412 5 temp3=0;
413 5 temp5=0;
414 5 }
415 4
416 4 }
417 3 if(temp3==0x44){
418 4 if(temp5==0x22){ //加键
419 5 up=1;
420 5 temp3=0;
421 5 temp5=0;
422 5 }
423 4 }
424 3 if(temp3==0x54){
425 4 if(temp5==0x2a){ //减键
426 5 dw=1;
427 5 temp3=0;
C51 COMPILER V7.07 YK1602 09/08/2006 10:12:13 PAGE 8
428 5 temp5=0;
429 5 }
430 4
431 4 }
432 3 }
433 2
434 2
435 2 }
436 1 }
437
438
439
440 //遥控中断除理
441
442 void int0a()interrupt 0 using 2
443 {
444 1 // TH1=TL1=0;
445 1
446 1 //TR0=1; //启动定时器
447 1 yt++; //中断次数
448 1 if(yt==1)
449 1 {
450 2 TH1=TL1=0;
451 2 TR1=1; //启动定时器
452 2 }
453 1
454 1 if(yt==2)
455 1 {
456 2 temp1=TH1; //为起始
457 2 TH1=TL1=0;
458 2 if(temp1>=0x1f)
459 2 { //大于8ms
460 3 start=1; //置起码标志
461 3 }
462 2 else
463 2 {
464 3 start=0;
465 3 yt=0;
466 3 TR1=0;
467 3 }
468 2 }
469 1
470 1
471 1 else
472 1 {
473 2 if(start==1)
474 2 { //是起始才可以继续接收
475 3 temp1=TH1; //装入上次定时值
476 3 TH1=TL1=0; //重新计数
477 3 if(temp1>=0x05)
478 3 { //大于1.2ms
479 4 h=1;
480 4 }
481 3 else if(temp1>=0x01)
482 3 { //大于0.25ms
483 4
484 4 h=0;
485 4 }
486 3 da*=2;
487 3 if(h) da++;
488 3 gt++;
489 3 if(gt==8)
C51 COMPILER V7.07 YK1602 09/08/2006 10:12:13 PAGE 9
490 3 { //读8位
491 4 gt=0;gv++;
492 4 if(gv==1) temp2=da;
493 4 if(gv==2) temp3=da;
494 4 if(gv==3) temp4=da;
495 4 if(gv==4)
496 4 {temp5=da;
497 5 gv=0;
498 5 start=0;
499 5 yt=0;
500 5 TR1=0;
501 5 }
502 4
503 4 da=0;
504 4 }
505 3
506 3 }
507 2
508 2
509 2
510 2 }
511 1 }
512 /*------------------------*/
513
514 void main(void)
515 {
516 1 init_timer();
517 1 led6[0]=0;
518 1 led6[1]=2;
519 1 led6[2]=2;
520 1 led6[3]=2;
521 1 led6[4]=2;
522 1 led6[5]=2;
523 1 lcdreset(); //初始化
524 1 delay400ms();
525 1 disp1(3,0);
526 1 disp(2,1,love); //显示
527 1
528 1 delay400ms();
529 1
530 1 // DispOneChar(0,1,time[1]);
531 1 while(1)
532 1 {
533 2 delay400ms();
534 2 disp1(3,0);
535 2 acct_1();
536 2 yk();
537 2 }
538 1
539 1
540 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1081 ----
CONSTANT SIZE = 38 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 20
IDATA SIZE = ---- ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILER V7.07 YK1602 09/08/2006 10:12:13 PAGE 10
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -