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

📄 红外遥控.lst

📁 52单片机开发板的实例程序
💻 LST
字号:
C51 COMPILER V7.20   红外襙控                                                              09/23/2011 16:29:44 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE 红外襙控
OBJECT MODULE PLACED IN 红外遥控.OBJ
COMPILER INVOKED BY: C:\keil\C51\BIN\C51.EXE 红外遥控.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include<intrins.h>
   3          #define uint unsigned int
   4          #define uchar unsigned char
   5          sbit hw=P3^2;
   6          sbit a=P1^0;
   7          sbit b=P1^1;
   8          sbit c=P1^2;
   9          const uchar table[]={
  10                    0x3f,0x06,0x5b,0x4f,0x66,
  11                    0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  12          uchar hwx[66];
  13          uint num1=50;
  14          uchar date[4];
  15          void delay1(uint z)
  16          {
  17   1              uint i,j;
  18   1              for(i=z;i>0;i--)
  19   1              for(j=110;j>0;j--);
  20   1      }
  21          void delay(void)        //红外解码用的延时                                                      
  22          {
  23   1              unsigned char i=13;
  24   1              while(i)
  25   1                      i--;
  26   1      }
  27          void HC138(uchar i)
  28          {
  29   1        a=i&0x01;
  30   1        b=i&0x02;
  31   1        c=i&0x04;
  32   1      }
  33          void display(uchar flag,uchar num)
  34          {
  35   1         uchar ge,shi;
  36   1         shi=num/16;
  37   1         ge=num%16;
  38   1         P2=table[ge];
  39   1         HC138(flag);
  40   1         delay1(2);
  41   1         
  42   1         P2=table[shi];
  43   1         HC138(flag+1);
  44   1         delay1(2);
  45   1         
  46   1      }
  47          void main()
  48          {       
  49   1        //  uchar i;
  50   1              EA=1;
  51   1              EX0=1;
  52   1              IE0=1;
  53   1                      while(1)
  54   1                      {
  55   2                         display(0,date[3]);
C51 COMPILER V7.20   红外襙控                                                              09/23/2011 16:29:44 PAGE 2   

  56   2                         display(2,date[2]);
  57   2                         display(4,date[1]);
  58   2                         display(6,date[0]);
  59   2                      }
  60   1                      
  61   1      }
  62          void hongwai()   interrupt 0     
  63          {
  64   1        uchar i,j,temp;
  65   1              uint temp2;
  66   1              EX0=0;
  67   1              j=33;
  68   1              i=0;
  69   1              temp2=0;
  70   1              while(!hw)                  //检测是否有信号
  71   1              {
  72   2                      temp2++;
  73   2                      if(temp2==1000)
  74   2                      break;
  75   2              }
  76   1              if(temp2<1000)              //如果信号时间小于1000,则为干扰信号,重新检查
  77   1              {
  78   2                      EX0=1;
  79   2                      return;
  80   2              }
  81   1              while(j)                    //进行33次循环,进行解码
  82   1              {
  83   2                      temp=0;
  84   2                      hwx[i]=1;
  85   2                      while(!hw)               //P3^3引脚为低电平时
  86   2                      {
  87   3                              hwx[i]++;
  88   3                              delay();
  89   3                              temp++;
  90   3                              if(temp==250)         //防止干扰进入死循环
  91   3                                      break;
  92   3                      }
  93   2                      i++;
  94   2                      temp=0;
  95   2                      hwx[i]=1;
  96   2                      while(hw)                //P3^3引脚为高电平时
  97   2                      {
  98   3                              hwx[i]++;
  99   3                              delay();
 100   3                              temp++;
 101   3                              if(temp==250)         //防止干扰进入死循环
 102   3                                      break;
 103   3                      }
 104   2                      i++;
 105   2                      j--;
 106   2              }       
 107   1              i=255;
 108   1              while(i)                    //延时函数
 109   1              {
 110   2                      temp=255;
 111   2                      while(temp)
 112   2                      {
 113   3                              //_nop_();
 114   3                              temp--;
 115   3            }
 116   2                      i--;
 117   2              }
C51 COMPILER V7.20   红外襙控                                                              09/23/2011 16:29:44 PAGE 3   

 118   1              temp=0;
 119   1              for(i=3;i<19;i++,i++){          //处理地址位前8位,这是3是因为去掉前面的引导码。对低电平时间数据的数理,
 120   2                      temp>>=1;                               //右移一位,接收低电平在前
 121   2                      if(hwx[i]>30)                   //检测低电平时间超过30就确认为1
 122   2                              temp+=0x80;
 123   2              }       
 124   1              date[0]=temp;
 125   1              temp=0;
 126   1              for(i=19;i<35;i++,i++){         //同上,这里处理地址位后8位
 127   2                      temp>>=1;
 128   2                      if(hwx[i]>30)
 129   2                              temp+=0x80;
 130   2              }
 131   1              date[1]=temp;
 132   1              temp=0;
 133   1              for(i=35;i<51;i++,i++){         //同上,这里处理控制位前8位
 134   2                      temp>>=1;
 135   2                      if(hwx[i]>30)
 136   2                              temp+=0x80;
 137   2              }
 138   1              date[2]=temp;
 139   1              temp=0;
 140   1              for(i=51;i<67;i++,i++){         //同上,这里处理控制位后8位
 141   2                      temp>>=1;
 142   2                      if(hwx[i]>30)
 143   2                              temp+=0x80;
 144   2              }
 145   1              date[3]=temp;   
 146   1              EX0=1;  
 147   1      }
 148          
 149          


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