irint.lst

来自「宏芯T102芯片驱动(51单片机作主控)」· LST 代码 · 共 304 行 · 第 1/2 页

LST
304
字号
C51 COMPILER V7.06   IRINT                                                                 12/28/2004 10:14:05 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE IRINT
OBJECT MODULE PLACED IN .\obj\IrInt.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\new_osd\IrInt.c BROWSE INCDIR(.\include\;.\source\) DEBUG OBJECTEXTE
                    -ND PRINT(.\IrInt.lst) OBJECT(.\obj\IrInt.obj)

stmt level    source

   1          //#ifdef INTERRUPT1
   2          #include "reg51.h"
   3          #include <intrins.h>
   4          #include "Common.h"
   5          #include "Remote.h"
   6          #include "KeyPad.h"
   7          #include "OSDDraw.h"
   8          #include "TwoWire.h"
   9          
  10          extern bit ir_enable;
  11          extern uCHAR ir_data;
  12          //extern uWORD count1;
  13          
  14          bit Filter13(bit le)
  15          {
  16   1              bit r;
  17   1              r=INT1;
  18   1              if(le==1)
  19   1              {
  20   2                      _nop_();
  21   2                      _nop_();
  22   2                      _nop_();
  23   2                      r&=INT1;
  24   2                      _nop_();
  25   2                      _nop_();
  26   2                      _nop_();
  27   2                      r&=INT1;
  28   2              }
  29   1              else
  30   1              {
  31   2                      _nop_();
  32   2                      _nop_();
  33   2                      _nop_();
  34   2                      r|=INT1;
  35   2                      _nop_();
  36   2                      _nop_();
  37   2                      _nop_();
  38   2                      r|=INT1;
  39   2              }
  40   1              if(r==le)
  41   1                      return 1;
  42   1              else
  43   1                      return 0;
  44   1      }
  45          /*遥控接收在此中断程序内完成
  46            数据放在ir_data内*/
  47          /************************************/
  48          /*  Interrupt for IR subroutine     */
  49          /*  external interrupt source INT0  */
  50          /************************************/
  51          void int1Remote(void) interrupt 2
  52          {
  53   1              register BYTE i;
  54   1              unsigned int count;             /*计时变量*/
C51 COMPILER V7.06   IRINT                                                                 12/28/2004 10:14:05 PAGE 2   

  55   1              unsigned int  temp0,temp1,ir_code=0;
  56   1              ir_enable=TRUE;
  57   1              TMOD=0x11;             /*timer 0 operate in 16 bit mode*/
  58   1              EX1=0;
  59   1              TL0=0;
  60   1              TH0=0;
  61   1              TR0=1;
  62   1              /************************************/
  63   1              /*   Detect IR Head                 */
  64   1              /************************************/
  65   1              do                /*Detect IR head 9mS*/
  66   1              {
  67   2                      count=(TL0+TH0*256);   /*count :us unit */
  68   2                      if(Filter13(1)==1) break;
  69   2              }while(count<=(IR_HEAD+DELTA));
  70   1              TR0=0;                  /*停止计时*/
  71   1      
  72   1              if(Filter13(0)==1||count<(IR_HEAD-DELTA*25))       /*for some noise disturb IR*/
  73   1                      {
  74   2                      ir_enable=FALSE; /* no IR head or not suitable for Ir head*/
  75   2                      EX1=1;
  76   2                      TR0=1;
  77   2                      return;
  78   2                      }
  79   1              /************************************/
  80   1              /*   Detect OFF CODE     4.5mS      */
  81   1              /************************************/
  82   1              while(Filter13(0)==1);
  83   1              TR0=0;
  84   1              TL0=0;
  85   1              TH0=0;
  86   1              TR0=1;
  87   1              do                /*Detect IR OFF CODE*/
  88   1              {
  89   2                      count=(TL0+TH0*256);   /*count :us unit */
  90   2                      if(Filter13(0)==1) break;
  91   2              }while(count<(OFF_CODE+DELTA));
  92   1              TR0=0;
  93   1              count=(TL0+TH0*256);   /*count :us unit */
  94   1              if(count<=(OFF_CODE-DELTA*2))
  95   1              {
  96   2                      /*重复码OFF=2.25*/
  97   2                      if((count>(OFF_REP-DELTA)&&count<(OFF_REP+DELTA)))
  98   2                      {
  99   3                              TR0=0;
 100   3                              TL0=0;
 101   3                              TH0=0;
 102   3                              TR0=1;
 103   3                              do
 104   3                              {
 105   4                                      count=(TL0+TH0*256);   /*count :us unit */
 106   4                                      if(Filter13(1)==1) break;
 107   4                              }while(count<=(REP_CODE+DELTA));
 108   3                              TR0=0;
 109   3                              count=(TL0+TH0*256);   /*count :us unit */
 110   3                              if(INT1==1)
 111   3                              {
 112   4                                      TR0=0;
 113   4                                      if(
 114   4                                      ir_data==REMOTE_KEY_DECR||ir_data==REMOTE_KEY_INCR)
 115   4                                      {
 116   5                                      ir_enable=TRUE; /*注意:ir_data不变*/
C51 COMPILER V7.06   IRINT                                                                 12/28/2004 10:14:05 PAGE 3   

 117   5                                      EX1=0;
 118   5                                      }
 119   4                                      else
 120   4                                      {
 121   5                                      ir_data=0;
 122   5                                      ir_enable=FALSE;
 123   5                                      EX1=1;
 124   5                                      TR0=1;
 125   5                                      }
 126   4                                      return;
 127   4                              }
 128   3                      }
 129   2                      else
 130   2                      {
 131   3                              ir_enable=FALSE;   /*not suitable for off code*/
 132   3                              EX1=1;
 133   3                              TR0=1;
 134   3                              return;
 135   3                      }
 136   2              }
 137   1              /************************************/
 138   1              /*   Detect 16 bit address code     */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?