📄 timer.lst
字号:
351 3 else if ( IR_Snd_CNT == 16 )
352 3 IR_OUT = 1;
353 3 else if ( IR_Snd_CNT == 120 )
354 3 IR_OUT = 0;
355 3 else if ( IR_Snd_CNT == 121 )
356 3 IR_OUT = 1;
357 3 break;
358 3 case 2: // Send Code Repeat
359 3 switch ( IR_Snd_CNT )
360 3 {
361 4 case 0:
362 4 IR_OUT = 0;
363 4 break;
364 4 case 16:
C51 COMPILER V7.50 TIMER 12/14/2006 10:36:34 PAGE 7
365 4 IR_OUT = 1;
366 4 break;
367 4 case 20:
368 4 IR_OUT = 0;
369 4 break;
370 4 case 21:
371 4 IR_OUT = 1;
372 4 break;
373 4 }
374 3 break;
375 3 }
376 2 IR_Snd_CNT++;
377 2 }
378 1
379 1 ETCTR &= 0x7F; // Clr TF2
380 1 // TF1 = 0;
381 1 }
382
383 void IR_Send_Code()
384 {
385 1 if ( IR_SndBit_CNT == 0 )
386 1 {
387 2 if ( IR_SndCode_CNT == 0 )
388 2 {
389 3 IR_Snd = IR_CusCode;
390 3 }
391 2 else if ( IR_SndCode_CNT == 8 )
392 2 {
393 3 IR_Snd = ~IR_CusCode;
394 3 }
395 2 else if ( IR_SndCode_CNT == 16 )
396 2 {
397 3 IR_Snd = IR_SndDataCode;
398 3 }
399 2 else if ( IR_SndCode_CNT == 24 )
400 2 {
401 3 IR_Snd = ~IR_SndDataCode;
402 3 }
403 2
404 2 if ( IR_Snd & 0x80 )
405 2 IR_SndBit_CNT = 3;
406 2 else
407 2 IR_SndBit_CNT = 1;
408 2
409 2 IR_SndCode_CNT++;
410 2 IR_OUT = 0;
411 2 }
412 1 else
413 1 {
414 2 IR_SndBit_CNT --;
415 2 if ( IR_SndBit_CNT == 0 )
416 2 IR_Snd = IR_Snd<<1;
417 2
418 2 IR_OUT = 1;
419 2 }
420 1 }
421
422 void Int0(void) interrupt 0 using 3
423 {
424 1 data bit IR_Input;
425 1 data bit IR_Valid;
426 1 data unsigned int IR_Duration;
C51 COMPILER V7.50 TIMER 12/14/2006 10:36:34 PAGE 8
427 1
428 1 IR_Duration = IR_TMR;
429 1 IR_TMR = 0;
430 1
431 1 IR_Valid = 0;
432 1
433 1 if ( IR_Duration >= 50 )
434 1 {
435 2 IR_Rev_CNT = 0;
436 2 }
437 1 else if ( IR_Duration >= 6 && IR_Duration <= 13 ) // 1.125 ms
438 1 {
439 2 IR_Input = 0;
440 2 IR_Valid = 1;
441 2 }
442 1 else if ( IR_Duration >= 16 && IR_Duration <= 23 ) // 0.5625 ms
443 1 {
444 2 IR_Input = 1;
445 2 IR_Valid = 1;
446 2 }
447 1
448 1 if (IR_Valid)
449 1 {
450 2 IR_Rev_CNT++;
451 2 IR_RevCode <<= 1;
452 2 IR_RevCode |= IR_Input;
453 2
454 2 switch ( IR_Rev_CNT )
455 2 {
456 3 case 8:
457 3 IR_RevCusCode = IR_RevCode;
458 3 break;
459 3 case 16:
460 3 IR_RevCusCode_B = IR_RevCode;
461 3 break;
462 3 case 24:
463 3 IR_RevDataCode = IR_RevCode;
464 3 break;
465 3 case 32:
466 3 if ( IR_RevCode == (~IR_RevDataCode) && IR_RevCusCode == IR_CusCode
467 3 && IR_RevCusCode == (~IR_RevCusCode_B) )
468 3 {
469 4 IR_Pressed = 1;
470 4 Key = IR_Value = IR_RevDataCode;
471 4
472 4 switch ( IR_Value )
473 4 {
474 5 case N_0:
475 5 IR_NUM = 0 ;
476 5 break;
477 5 case N_1:
478 5 IR_NUM = 1 ;
479 5 break;
480 5 case N_2:
481 5 IR_NUM = 2 ;
482 5 break;
483 5 case N_3:
484 5 IR_NUM = 3 ;
485 5 break;
486 5 case N_4:
487 5 IR_NUM = 4 ;
488 5 break;
C51 COMPILER V7.50 TIMER 12/14/2006 10:36:34 PAGE 9
489 5 case N_5:
490 5 IR_NUM = 5 ;
491 5 break;
492 5 case N_6:
493 5 IR_NUM = 6 ;
494 5 break;
495 5 case N_7:
496 5 IR_NUM = 7 ;
497 5 break;
498 5 case N_8:
499 5 IR_NUM = 8 ;
500 5 break;
501 5 case N_9:
502 5 IR_NUM = 9 ;
503 5 break;
504 5 default :
505 5 IR_NUM = 0xFF;
506 5 break;
507 5 }
508 4 }
509 3 break;
510 3 }
511 2 }
512 1 IE0 = 0;
513 1 }
514
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1048 ----
CONSTANT SIZE = 64 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 35 2
IDATA SIZE = ---- ----
BIT SIZE = 4 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -