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

📄 034_红外遥控器按键识别.lst

📁 这个代码是关于红外遥控器按键识别
💻 LST
字号:
C51 COMPILER V8.01   034_红外_?_芲按键识别                                                03/08/2006 15:28:30 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE 034_红外_?_芲按键识别
OBJECT MODULE PLACED IN 034_红外遥控器按键识别.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 034_红外遥控器按键识别.c BROWSE DEBUG OBJECTEXTEND TABS(2)

line level    source

   1          //|******************************************|
   2          //|      AT89S52,fosc=22.1184MHz             |
   3          //|      Author: Sun An-Qing                 |
   4          //|      Date:   2005/11/22                  |
   5          //|      www.supermcu.com                    |
   6          //|      glsaq@sina.com.cn                   |
   7          //|      版权所有,供学习使用,请勿商业用途  |
   8          //|******************************************|
   9          
  10          //|******************************************|
  11          //|      SP_Lab_011:红外遥控器               |
  12          //|                 (C51)                    |
  13          //|******************************************|
  14          
  15          //|******************************************|
  16          //|红外遥控器信号通过P3.2口接收,由INT0的中断|
  17          //|完成信号接收与处理,定时器T0产生精确定时,|
  18          //|通过P3.6口给出红外遥控器解码成功提示信号。|
  19          //|******************************************|
  20          
  21          #include <REGX51.H>
  22          
  23          /***********************/
  24          //---fosc=22.1184MHz---//
  25          #define DLY_882US 1626
  26          #define DLY_1000US 1843
  27          #define DLY_4740US 8737
  28          /***********************/
  29          
  30          sbit Infrare=P3^2;
  31          sbit SPK=P3^7;
  32          
  33          unsigned char BufferCount;
  34          unsigned char Buffer[2];
  35          
  36          void main(void)
  37          {
  38   1        IT0=1;
  39   1        EX0=1;
  40   1        EA=1;
  41   1      
  42   1        TMOD=0x01;
  43   1      
  44   1        while(1);
  45   1      }
  46          
  47          void int0(void) interrupt 0
  48          {
  49   1        unsigned char i,j;
  50   1        unsigned char temp;
  51   1      
  52   1        EX0=0;
  53   1      
  54   1        for(i=5;i>0;i--)
  55   1          {
C51 COMPILER V8.01   034_红外_?_芲按键识别                                                03/08/2006 15:28:30 PAGE 2   

  56   2            TH0=(65536-DLY_882US)/256;
  57   2            TL0=(65536-DLY_882US)%256;
  58   2            TF0=0;
  59   2            TR0=1;
  60   2            while(TF0==0);
  61   2            TF0=0;
  62   2            TR0=0;
  63   2            if(Infrare==1)goto Exit_Int0;
  64   2          }
  65   1      
  66   1        while(Infrare==0);
  67   1        TH0=(65536-DLY_4740US)/256;
  68   1        TL0=(65536-DLY_4740US)%256;
  69   1        TF0=0;
  70   1        TR0=1;
  71   1        while(TF0==0);
  72   1        TF0=0;
  73   1        TR0=0;
  74   1        
  75   1        for(i=16;i>0;i--)
  76   1          {
  77   2            while(Infrare==0);
  78   2            TH0=(65536-DLY_882US)/256;
  79   2            TL0=(65536-DLY_882US)%256;
  80   2            TF0=0;
  81   2            TR0=1;
  82   2            while(TF0==0);
  83   2            TF0=0;
  84   2            TR0=0;
  85   2            if(Infrare==1)
  86   2              {
  87   3                TH0=(65536-DLY_1000US)/256;
  88   3                TL0=(65536-DLY_1000US)%256;
  89   3                TF0=0;
  90   3                TR0=1;
  91   3                while(TF0==0);
  92   3                TF0=0;
  93   3                TR0=0;
  94   3              }
  95   2          }
  96   1        
  97   1        BufferCount=0;  
  98   1        for(j=2;j>0;j--)
  99   1          {
 100   2            temp=0;
 101   2            for(i=8;i>0;i--)
 102   2              {
 103   3                temp>>=1;
 104   3                while(Infrare==0);
 105   3                TH0=(65536-DLY_882US)/256;
 106   3                TL0=(65536-DLY_882US)%256;
 107   3                TF0=0;
 108   3                TR0=1;
 109   3                while(TF0==0);
 110   3                TF0=0;
 111   3                TR0=0;
 112   3                if(Infrare==1)temp+=0x80;
 113   3                if(Infrare==1)
 114   3                  {
 115   4                    TH0=(65536-DLY_1000US)/256;
 116   4                    TL0=(65536-DLY_1000US)%256;
 117   4                    TF0=0;
C51 COMPILER V8.01   034_红外_?_芲按键识别                                                03/08/2006 15:28:30 PAGE 3   

 118   4                    TR0=1;
 119   4                    while(TF0==0);
 120   4                    TF0=0;
 121   4                    TR0=0;
 122   4                  }
 123   3              }
 124   2            Buffer[BufferCount]=temp;
 125   2            BufferCount++;
 126   2          }
 127   1      
 128   1        if(Buffer[0]==~Buffer[1])
 129   1          {
 130   2            P0=Buffer[1];
 131   2            SPK=0;
 132   2            for(i=3;i>0;i--)
 133   2              {
 134   3                TH0=(65536-DLY_4740US)/256;
 135   3                TL0=(65536-DLY_4740US)%256;
 136   3                TF0=0;
 137   3                TR0=1;
 138   3                while(TF0==0);
 139   3                TF0=0;
 140   3                TR0=0;
 141   3              }
 142   2            SPK=1;
 143   2          }
 144   1      
 145   1      Exit_Int0:
 146   1        EX0=1;
 147   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    242    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      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 + -