⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 irint.lst

📁 TFT LCD驱动芯片T100A+AU7" Source code
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   IRINT                                                                 06/16/2005 10:05:41 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE IRINT
OBJECT MODULE PLACED IN F:\T100_C~1\HUI_CH~1\铁将军\SIMULA~2\IRINT.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F:\T100_C~1\HUI_CH~1\铁将军\SIMULA~2\IRINT.C DB SB OE

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          #include "T101_Util.h"
  10          
  11          extern uWORD XCLK_MCU;
  12          extern bit ir_enable;
  13          extern uCHAR ir_data;
  14           uCHAR ir_data1;
  15          //extern uWORD count1;
  16          extern bit IRFACTRY_Ctrl(uCHAR cCom);
  17          
  18          bit Filter13(bit le)
  19          {
  20   1              bit r;
  21   1              r=INT1;
  22   1              if(le==1)
  23   1              {
  24   2                      _nop_();
  25   2                      _nop_();
  26   2                      _nop_();
  27   2                      r&=INT1;
  28   2                      _nop_();
  29   2                      _nop_();
  30   2                      _nop_();
  31   2                      r&=INT1;
  32   2              }
  33   1              else
  34   1              {
  35   2                      _nop_();
  36   2                      _nop_();
  37   2                      _nop_();
  38   2                      r|=INT1;
  39   2                      _nop_();
  40   2                      _nop_();
  41   2                      _nop_();
  42   2                      r|=INT1;
  43   2              }
  44   1              if(r==le)
  45   1                      return 1;
  46   1              else
  47   1                      return 0;
  48   1      }
  49          /*遥控接收在此中断程序内完成
  50            数据放在ir_data内*/
  51          /************************************/
  52          /*  Interrupt for IR subroutine     */
  53          /*  external interrupt source INT0  */
  54          /************************************/
  55          void int1Remote(void) interrupt 2
C51 COMPILER V7.06   IRINT                                                                 06/16/2005 10:05:41 PAGE 2   

  56          {
  57   1      /*    static uWORD IR_HEAD=20000;//     =       (XCLK_MCU*3/4);//10738//9000//7500
  58   1              static uWORD OFF_CODE=10000;//  =   (IR_HEAD/2);//5369//4500//3750
  59   1              uWORD OFF_REP;//        =       (IR_HEAD/4);//2684//2250//      1875
  60   1              uWORD REP_CODE;//       =       (IR_HEAD/16);//667//467
  61   1              uWORD DELTA ;//    =    300;//250
  62   1              uWORD CODE_0_TIME;//=   (IR_HEAD/16);//667//557//467
  63   1              uWORD CODE_1_TIME;//=   (CODE_0_TIME*3);//2000//1670//1400*/
  64   1              register BYTE i;
  65   1              unsigned int count,count1;              /*计时变量*/
  66   1              unsigned int  temp0,temp1,ir_code=0;
  67   1              ir_enable=TRUE;
  68   1              TMOD=0x11;             /*timer 0 operate in 16 bit mode*/
  69   1              EX1=0;
  70   1              TL0=0;
  71   1              TH0=0;
  72   1              TR0=1;
  73   1              /************************************/
  74   1              /*   Detect IR Head                 */
  75   1              /************************************/
  76   1              do                /*Detect IR head 9mS*/
  77   1              {
  78   2                      count=(TL0+TH0*256);   /*count :us unit */
  79   2                      if(Filter13(1)==1) break;
  80   2              }while(count<=(IR_HEAD+DELTA));
  81   1              TR0=0;                  /*停止计时*/
  82   1                      count=(TL0+TH0*256);   /*count :us unit */
  83   1              
  84   1              if(Filter13(0)==1||((count<(IR_HEAD-DELTA*25))))//&&(IR_HEAD!=0xffff)))//||count<(7000))//IR_HEAD!=0xffff
             -)       /*for some noise disturb IR*/
  85   1                      {
  86   2                      ir_enable=FALSE; /* no IR head or not suitable for Ir head*/
  87   2                      EX1=1;
  88   2                      TR0=1;
  89   2                      return;
  90   2                      }
  91   1              /************************************/
  92   1              /*   Detect OFF CODE     4.5mS      */
  93   1              /************************************/
  94   1              while(Filter13(0)==1);
  95   1              TR0=0;
  96   1              TL0=0;
  97   1              TH0=0;
  98   1              TR0=1;
  99   1              do                /*Detect IR OFF CODE*/
 100   1              {
 101   2                      count=(TL0+TH0*256);   /*count :us unit */
 102   2                      if(Filter13(0)==1) break;
 103   2              }while(count<(OFF_CODE+DELTA));
 104   1              count1=count;
 105   1       /*  if(IR_HEAD==0xffff)IR_HEAD =       count*2;//10738//9000//7500
 106   1              OFF_CODE  =   IR_HEAD/2;//5369//4500//3750
 107   1              OFF_REP =       (IR_HEAD/4);//2684//2250//      1875
 108   1              REP_CODE        =       (IR_HEAD/16);//667//467
 109   1              DELTA     =     300;//250
 110   1              CODE_0_TIME=    (IR_HEAD/16);//667//557//467
 111   1              CODE_1_TIME=    (CODE_0_TIME*3);//2000//1670//1400*/
 112   1              TR0=0;
 113   1              count=(TL0+TH0*256);   /*count :us unit */
 114   1              if(count<=(OFF_CODE-DELTA*2))
 115   1              {
 116   2                      /*重复码OFF=2.25*/
C51 COMPILER V7.06   IRINT                                                                 06/16/2005 10:05:41 PAGE 3   

 117   2                      if((count>(OFF_REP-DELTA)&&count<(OFF_REP+DELTA)))
 118   2                      {
 119   3                              TR0=0;
 120   3                              TL0=0;
 121   3                              TH0=0;
 122   3                              TR0=1;
 123   3                              do
 124   3                              {
 125   4                                      count=(TL0+TH0*256);   /*count :us unit */
 126   4                                      if(Filter13(1)==1) break;
 127   4                              }while(count<=(REP_CODE+DELTA));
 128   3                              TR0=0;
 129   3                              count=(TL0+TH0*256);   /*count :us unit */
 130   3                              if(INT1==1)
 131   3                              {
 132   4                                      TR0=0;
 133   4                                      if(ir_data==REMOTE_KEY_VO_DEC||ir_data==REMOTE_KEY_VO_INC||
 134   4                                      ir_data==REMOTE_KEY_DECR_F||ir_data==REMOTE_KEY_INCR_F||
 135   4                                      ir_data==REMOTE_KEY_DECR||ir_data==REMOTE_KEY_INCR)
 136   4                                      {
 137   5                                      ir_enable=TRUE; /*注意:ir_data不变*/
 138   5                                      EX1=0;
 139   5                                      }
 140   4                                      else
 141   4                                      {
 142   5                                      ir_data=0;
 143   5                                      ir_enable=FALSE;
 144   5                                      EX1=1;
 145   5                                      TR0=1;
 146   5                                      }
 147   4                                      return;
 148   4                              }
 149   3                      }
 150   2                      else
 151   2                      {
 152   3                              ir_enable=FALSE;   /*not suitable for off code*/
 153   3                              EX1=1;
 154   3                              TR0=1;
 155   3                              return;
 156   3                      }
 157   2              }
 158   1              /************************************/
 159   1              /*   Detect 16 bit address code     */
 160   1              /************************************/
 161   1              if(ir_enable==TRUE)
 162   1              {
 163   2                      TMOD=0x11;           /*counter start with INT0 and TR0*/
 164   2                      ir_code=0;              /*初始化变量*/
 165   2                      for(i=0;i<16;i++)
 166   2                      {
 167   3                              while(INT1==0);
 168   3                              TL0=0;
 169   3                              TH0=0;
 170   3                              TR0=1;
 171   3                              do
 172   3                              {
 173   4                                      count=(TL0+TH0*256);   /*count :us unit */
 174   4                                      if(Filter13(0)==1) break;
 175   4                              }while(count<=(CODE_1_TIME+DELTA));     /*INT0为高电平时计时*/
 176   3                              TR0=0;
 177   3                              ir_code<<=1;
 178   3                              if((count>(CODE_1_TIME-DELTA))&&(count<=(CODE_1_TIME+DELTA)))  /*detect 1 code  2.24mS-0.56mS=1.68mS*/
C51 COMPILER V7.06   IRINT                                                                 06/16/2005 10:05:41 PAGE 4   

 179   3                                      ir_code++;
 180   3                              else if((count>(CODE_0_TIME-DELTA))&&(count<=(CODE_0_TIME+DELTA)));  /*detect 0 code 1.12mS-0.56mS=0.56
             -mS*/
 181   3                              else
 182   3                              {
 183   4                                      ir_enable=FALSE;
 184   4                                      TR0=1;
 185   4                                      break;           /*not suitable for address code */
 186   4                              }
 187   3                      }                /*end for*/

⌨️ 快捷键说明

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