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

📄 irint.lst

📁 在51单片机上用C写的T100,T101TFT屏的控制程序,有OSD
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   IRINT                                                                 05/20/2005 14:34:58 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE IRINT
OBJECT MODULE PLACED IN C:\T100_S~1\IRINT.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\T100_S~1\IRINT.C DB SB OE OT(6)

stmt level    source

   1          #include "reg51.h"
   2          #include <intrins.h>
   3          #include "Common.h"
   4          #include "Remote.h"
   5          #include "OSDDraw.h"
   6          #include "TwoWire.h"
   7          #include "T100_Util.h"
*** WARNING C318 IN LINE 7 OF C:\T100_S~1\IRINT.C: can't open file 'T100_Util.h'
   8          #include "SYSTEM.h"
   9          
  10          extern bit bNTSC_PAL    = 0;      //0:PAL               1:NTSC
  11          extern bit bFULL_43     = 1;      //0:4:3               1:FULL
  12          extern bit bUP_DOWN     = 1;      //0:Down to Up        1:Up to Down
  13          extern bit bLEFT_RIGHT  = 1;  
  14          
  15          bit ir_enable=0;
  16          uCHAR idata ir_data;
  17          extern uCHAR idata cSource;
  18          void IRSourceSelCtrl(void);
  19          void IRSCALEREvent(void);
  20          void IRDismodeEvent(void);
  21          extern void Delay_ms(uCHAR);
  22          
  23          bit Filter13(bit le)
  24          {
  25   1              bit r;
  26   1              r=INT1;
  27   1              if(le==1)
  28   1              {
  29   2                      _nop_();
  30   2                      _nop_();
  31   2                      _nop_();
  32   2                      r&=INT1;
  33   2                      _nop_();
  34   2                      _nop_();
  35   2                      _nop_();
  36   2                      r&=INT1;
  37   2              }
  38   1              else
  39   1              {
  40   2                      _nop_();
  41   2                      _nop_();
  42   2                      _nop_();
  43   2                      r|=INT1;
  44   2                      _nop_();
  45   2                      _nop_();
  46   2                      _nop_();
  47   2                      r|=INT1;
  48   2              }
  49   1              if(r==le)
  50   1                      return 1;
  51   1              else
  52   1                      return 0;
  53   1      }
  54          /*遥控接收在此中断程序内完成
C51 COMPILER V7.06   IRINT                                                                 05/20/2005 14:34:58 PAGE 2   

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

 117   3                              TR0=0;
 118   3                              count=(TL0+TH0*256);   /*count :us unit */
 119   3                              if(INT1==1)
 120   3                              {
 121   4                                      TR0=0;
 122   4                                      if(
 123   4      //#ifdef SINAI_REMOTE
 124   4                                      ir_data==REMOTE_KEY_VO_DEC||ir_data==REMOTE_KEY_VO_INC||
 125   4      //#endif
 126   4                                      ir_data==REMOTE_KEY_DECR||ir_data==REMOTE_KEY_INCR )
 127   4      
 128   4                                      {
 129   5      
 130   5                                      ir_enable=TRUE; /*注意:ir_data不变*/
 131   5                                      EX1=0;
 132   5                                      }
 133   4                                      else
 134   4                                      {
 135   5                                      ir_data=0;
 136   5                                      ir_enable=FALSE;
 137   5                                      EX1=1;
 138   5                                      TR0=1;
 139   5                                      }
 140   4                                      return;
 141   4                              }
 142   3                      }
 143   2                      else if(count>(OFF_REP+DELTA))
 144   2                      {
 145   3      
 146   3                       ir_enable=TRUE;        /*注意:ir_data不变*/
 147   3                       EX1=0;
 148   3      
 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              /************************************/
 160   1              /*   Detect 16 bit address code     */
 161   1              /************************************/
 162   1              if(ir_enable==TRUE)
 163   1              {
 164   2                      TMOD=0x11;           /*counter start with INT0 and TR0*/
 165   2                      ir_code=0;              /*初始化变量*/
 166   2                      for(i=0;i<16;i++)
 167   2                      {
 168   3                              while(INT1==0);
 169   3                              TL0=0;
 170   3                              TH0=0;
 171   3                              TR0=1;
 172   3                              do
 173   3                              {
 174   4                                      count=(TL0+TH0*256);   /*count :us unit */
 175   4                                      if(Filter13(0)==1) break;
 176   4                              }while(count<=(CODE_1_TIME+DELTA));     /*INT0为高电平时计时*/
 177   3                              TR0=0;
 178   3                              ir_code<<=1;
C51 COMPILER V7.06   IRINT                                                                 05/20/2005 14:34:58 PAGE 4   

 179   3                              if((count>(CODE_1_TIME-DELTA))&&(count<=(CODE_1_TIME+DELTA)))  /*detect 1 code  2.24mS-0.56mS=1.68mS*/
 180   3                                      ir_code++;
 181   3                              else if((count>(CODE_0_TIME-DELTA))&&(count<=(CODE_0_TIME+DELTA)));  /*detect 0 code 1.12mS-0.56mS=0.56
             -mS*/
 182   3                              else
 183   3                              {
 184   4                                      ir_enable=FALSE;
 185   4                                      TR0=1;
 186   4                                      break;           /*not suitable for address code */
 187   4                              }
 188   3                      }                /*end for*/
 189   2              }
 190   1              /************************************/
 191   1              /*   Detect 16 bit data code        */
 192   1              /************************************/
 193   1              if(ir_enable==TRUE&&ir_code==IR_SYSTEM_CODE)/**/
 194   1              {
 195   2                      TMOD=0x11;           /*counter start with INT0 and TR0*/

⌨️ 快捷键说明

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