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