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

📄 ir_receive.lst

📁 智能家居系统。。。包括PS2键盘
💻 LST
字号:
C51 COMPILER V7.06   IR_RECEIVE                                                            05/18/2008 14:29:17 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE IR_RECEIVE
OBJECT MODULE PLACED IN IR_Receive.OBJ
COMPILER INVOKED BY: E:\My Electronic\Tools\Design tools\keil7.06\C51\BIN\C51.EXE IR_Receive.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <REG52.H>
   2          #include <intrins.h>
   3          
   4          #define uchar unsigned char
   5          sbit    IR_Pin=P3^3;
   6          
   7          extern uchar inbuf1[];
   8          //extern uchar read_flagg;
   9          extern uchar    Ir_Over;
  10          
  11          uchar   Ir_Count=0;
  12          uchar   Ir_Over;
  13          uchar   Ir_Data;
  14          uchar   ti,temp=0;
  15          uchar   DAT[]={0,0,0,0};
  16          
  17          void delay_2us(unsigned char);
  18          void delay_1ms();
  19          void Init();
  20          /*********蜂鸣器函数调用声明********/
  21          //void ok_beep();
  22          /********串口通讯函数调用声明*******/
  23          void send_string_com(unsigned char *str,unsigned char strlen); //向串口发送一个字符串
  24          void send_char_com(unsigned char ch);
  25          
  26          void    IR()    interrupt       2
  27          {
  28   1              EX0=0;  EX1=0;          //关外部中断
  29   1              Ir_Data=1;
  30   1              for (ti=0;ti<4;ti++)                            //延时,跳过引导码的低电平
  31   1              {
  32   2                      delay_1ms();
  33   2                      if      (IR_Pin)        
  34   2                      {
  35   3                              Ir_Data=0;
  36   3                              break;
  37   3                      }
  38   2              }
  39   1              if (Ir_Data)
  40   1              {
  41   2                      while(IR_Pin==0);
  42   2                      for (ti=0;ti<4;ti++)                            //延时,跳过引导码高电平
  43   2                      {
  44   3                              delay_1ms();
  45   3                              if (IR_Pin==0) 
  46   3                              {
  47   4                                      Ir_Data=0;
  48   4                                      break;
  49   4                              }
  50   3                      }
  51   2                      if (Ir_Data)
  52   2                      {
  53   3                              while (IR_Pin);                                 //等待低电平
  54   3                              for (temp=0;temp<4;temp++)              //存放四个字节
  55   3                                      for (Ir_Count=0;Ir_Count<8;Ir_Count++)                  //8位
C51 COMPILER V7.06   IR_RECEIVE                                                            05/18/2008 14:29:17 PAGE 2   

  56   3                                      {
  57   4                                              delay_2us(100);                 //延时200us,跳过低电平时间
  58   4                                              while (IR_Pin==0);
  59   4                                              delay_2us(200);                 //延时800us
  60   4                                              delay_2us(200);
  61   4                                              DAT[temp]>>=1;
  62   4                                              if (IR_Pin)     DAT[temp] |= 0x80;
  63   4                                              while(IR_Pin);
  64   4                                      }
  65   3                              if (DAT[0]==DAT[1]&&DAT[2]!=DAT[3]) Ir_Over=1;
  66   3                              for (ti=0;ti<118;ti++)  delay_1ms();
  67   3                      }
  68   2              }       
  69   1              EX0=1;EX1=1;    //开外部中断
  70   1      }
  71          
  72          void Init_IR()
  73          {
  74   1              Ir_Over=0;
  75   1              IT1=1;
  76   1              EX1=1;
  77   1              EA=1;
  78   1      }
  79          
  80          void IR_Receive_function()
  81          {
  82   1              unsigned i=0,k=0;
  83   1                      if (Ir_Over)    
  84   1                      {
  85   2                              EX0=0;  EX1=0;          //关外部中断
  86   2                              if (DAT[0]==DAT[1]&&DAT[2]!=DAT[3])
  87   2                              {
  88   3                                      switch (DAT[3])
  89   3                                      {
  90   4                                              case 0xFB:      break;   //光电监测
  91   4                                              case 0XE8:      if(inbuf1[19]=='1')inbuf1[19]='0';else inbuf1[19]='1';break;
  92   4                                              case 0XE9:      if(inbuf1[20]=='1')inbuf1[20]='0';else inbuf1[20]='1';break;
  93   4                                              case 0XEA:      if(inbuf1[21]=='1')inbuf1[21]='0';else inbuf1[21]='1';break;
  94   4                                              case 0XEC:      if(inbuf1[22]=='1')inbuf1[22]='0';else inbuf1[22]='1';break;
  95   4                                              case 0XED:      if(inbuf1[23]=='1')inbuf1[23]='0';else inbuf1[23]='1';break;
  96   4                                              case 0XEE:      if(inbuf1[24]=='1')inbuf1[24]='0';else inbuf1[24]='1';break;
  97   4                                              case 0XF0:      if(inbuf1[25]=='1')inbuf1[25]='0';else inbuf1[25]='1';break;
  98   4                                              case 0XF1:      if(inbuf1[26]=='1')inbuf1[26]='0';else inbuf1[26]='1';break;
  99   4                                              case 0XF2:      break;
 100   4                                              case 0XF4:      break;
 101   4                                              case 0XF5:      break;
 102   4                                              case 0XF6:      break;
 103   4                                              default:        break;
 104   4                                      }       
 105   3                              }
 106   2                              Ir_Over=0;
 107   2                              EX0=1;EX1=1;    //开外部中断
 108   2                      }
 109   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    460    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9       4
C51 COMPILER V7.06   IR_RECEIVE                                                            05/18/2008 14:29:17 PAGE 3   

   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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