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

📄 ir.lst

📁 8051单片机的LCDTV用户界面程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.01  IR                                                                     12/01/2005 09:38:54 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE IR
OBJECT MODULE PLACED IN IR.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE IR.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          
   3          //-------------------------------
   4          //IR receive program for MXIC demo board:
   5          //2 interrupt were occupy for IR receive
   6          //1: timmer 1 interrupt
   7          //2: external interrupt 1
   8          //
   9          //-------------------------------
  10          //typedef               unsigned char   BYTE;
  11          typedef         unsigned int    UINT;
  12          typedef         unsigned long   ULONG;
  13          //typedef               unsigned char   BYTE;
  14          
  15          //#include "reg52.h"
  16          //#include "public2.h"
  17          //#include <stdio.h>                                    /* define I/O functions */
  18          
  19          #include "mxREG52.H"
  20          //#include "Define.H"
  21          #include "Mxic_IR.h"
  22          //#include ".\inc\ir_var.h"
  23          
  24          void InitialTimer1(void);   //for IR period count 
  25          void InitialEx1Int(void);   //check edge
  26          
  27          bit CheckIrRepeatCode1(void);
  28          extern BYTE GetIrCodeData(void);
  29          extern BYTE GetIrIDData(void);
  30          
  31          extern int      T0_0Interval;
  32          bit CheckIrCommand(void);
  33          bit CheckIrRepeatCode(void);
  34          bit CheckIrRepeatCode1(void);
  35          //------------------------------------
  36          //------------------------------------
  37          //sbit  testpin=P2^0;
  38          //sbit  testpin_1=P2^1;
  39          //------------------------------------
  40          union FLAME{
  41                  struct IR_ID{
  42                  //UINT  ID;  
  43                  BYTE    ID0;
  44                  BYTE    ID1;
  45                  BYTE    Code0;
  46                  BYTE    Code1;
  47                  }Mcode;
  48                  
  49                  ULONG   Code;
  50          }Ir;
  51          
  52          BYTE    IrCount;//count1;
  53          //UINT  RemoteControllerID=0x0099;   //for Mintek
  54          
  55          union RM_ID{
C51 COMPILER V7.01  IR                                                                     12/01/2005 09:38:54 PAGE 2   

  56                  struct REMOTE_ID{
  57                  BYTE    MfgId;
  58                  BYTE    DeviceId;
  59                  }Idx;
  60                  
  61                  UINT Code;
  62          }RmId;
  63          //------------------------------------
  64          //------------------------------------
  65          bit             FirstEdge;
  66          bit             LeadCode;  //9ms_______-----4.2ms 
  67          //------------------------------------
  68          //------------------------------------
  69          bit EnableIr(void)
  70          {
  71   1              DisableIr();   //disable first
  72   1              if ( MxicIr.Bits.b1IrOn == 0 )
  73   1                      {
  74   2                      InitialTimer1();  //for time cnt
  75   2                      InitialEx1Int();  //
  76   2                      //IrOn=1;
  77   2                      MxicIr.Bits.b1IrOn=1;
  78   2                      MxicIr.Bits.b1GetIrFlame=0;
  79   2                      MxicIr.Bits.b1GetIrRepeatCode=0;
  80   2                      MxicIr.Bits.b1GetIrCommand=0;
  81   2      
  82   2                      //initial IR parameters
  83   2                      LeadCode=0;
  84   2                      FirstEdge=0; //start wait IR cycle
  85   2                      }
  86   1              
  87   1              return( MxicIr.Bits.b1IrOn );
  88   1      }
  89          
  90          //------------------------------------
  91          bit DisableIr(void)
  92          {
  93   1              if ( MxicIr.Bits.b1IrOn == 1 )
  94   1                      {
  95   2                      MxicIr.Bits.b1IrOn=0;
  96   2                      //for ext_int_1:
  97   2                      EX1=0;  //disable Ext_INT_1;
  98   2      
  99   2                      //for timer_int_1
 100   2                      ET1=0;  //disable Timer_INT_1;
 101   2                      TR1=0;  //stop counting
 102   2                      TH1=0;TL1=0;  //clear timer cnt;
 103   2      //      //clear Ir parameters
 104   2                      }
 105   1              return(MxicIr.Bits.b1IrOn);
 106   1      }
 107          
 108          /*
 109          //------------------------------------
 110          bit CheckIrRepeatCode(void)
 111          {
 112                  if ( MxicIr.Bits.b1GetIrRepeatCode )
 113                  {
 114          //              MxicIr.Bits.b1GetIrRepeatCode=0;
 115                          return(1);
 116                  }
 117                  else
C51 COMPILER V7.01  IR                                                                     12/01/2005 09:38:54 PAGE 3   

 118                          return(0);
 119          //      return( MxicIr.Bits.b1GetIrRepeatCode );
 120          }
 121          
 122          bit CheckIrRepeatCode1(void)
 123          {
 124                  if ( MxicIr.Bits.b1GetIrRepeatCode )
 125                  {
 126                          MxicIr.Bits.b1GetIrRepeatCode=0;
 127                          return(1);
 128                  }
 129                  else
 130                          return(0);
 131          //      return( MxicIr.Bits.b1GetIrRepeatCode );
 132          }
 133          */
 134          //------------------------------------
 135          BYTE GetIrCodeData(void)
 136          {
 137   1              if ( MxicIr.Bits.b1GetIrFlame == 1 )
 138   1                      {
 139   2                      return(Ir.Mcode.Code0);
 140   2                      }
 141   1              return(0xff);
 142   1      }
 143          
 144          BYTE GetIrIDData(void)
 145          {
 146   1              if ( MxicIr.Bits.b1GetIrFlame == 1 )
 147   1                      {
 148   2                      return(Ir.Mcode.ID1);
 149   2                      }
 150   1              return(0xff);
 151   1      }
 152          
 153          //------------------------------------
 154          //------------------------------------
 155          //timer 1 interrupt rate:
 156          //T=12/14.318M=0.838us
 157          //interrupt rate=0.838us * 65536 = 55ms
 158          //-----------------------------
 159          void InitialTimer1(void)   //for IR sampling 
 160          {
 161   1      
 162   1              TF1=1;
 163   1              TR1=0;  //not start counting
 164   1              ET1=1;  //enable Timer_int_1
 165   1              TMOD= 0x11;  //timer1 mod=1 -> 16bits time count 
 166   1              TH1=0;
 167   1              TL1=0;
 168   1              //PT1=0; //low priority
 169   1      }
 170          //------------------------------------
 171          //------------------------------------
 172          void InitialEx1Int(void)
 173          {
 174   1              EX1=1;  //enable external int 1
 175   1              IT1=1;  //negative trigger interrupt 
 176   1              EA=1;   //enable all int
 177   1      }
 178          //------------------------------------
 179          //
C51 COMPILER V7.01  IR                                                                     12/01/2005 09:38:54 PAGE 4   

 180          //------------------------------------
 181          void timer1_int( void ) interrupt 3   //about 55ms interrupt
 182          {
 183   1              if ( LeadCode == 1 )
 184   1                      {
 185   2                      MxicIr.Bits.b1GetIrRepeatCode=1;
 186   2                      MxicIr.Bits.b1GetIrFlame = 1;

⌨️ 快捷键说明

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