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

📄 2262.lst

📁 51单片机模拟2272解码,采用中断方法
💻 LST
字号:
C51 COMPILER V7.06   2262                                                                  08/01/2006 22:20:06 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 2262
OBJECT MODULE PLACED IN 2262.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 2262.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*------------------------------------------------------------------------------
   2          ;    Copyright (C) 2006  WangChanghong INTEGRATED PRODUCTS, INC.
   3          ;    All rights reserved.
   4          ;    MCU:AT89s52 ,晶体频率:12MHz
   5          :    作者:汪长洪
   6          :    时间:2006年08月01日
   7          ;    地点:威海
   8          ;----------------------------315M无线遥控解码程序------------------------------*/ 
   9          #include <AT89X52.H>
  10          #define uchar unsigned char
  11          #define uint unsigned int
  12          
  13          /*---------------------------------变量列表------------------------------------*/
  14          uchar  ReadCode[3],GetCode;
  15          
  16          /*---------------------------------函数列表------------------------------------*/
  17          void delay_200(void);                                            //200us精确延时
  18          void delay_250(void);                                            //250us精确延时
  19          void delay_131(void);                                            //131ms精确延时
  20          void init(void);                                                         //初始化子程序
  21          void INT0_intrupt();                                             //中断处理子程序(解码程序)
  22          
  23          /*-----------------------------主程序入口--------------------------------------*/
  24          main()
  25          {       
  26   1              init();     
  27   1              while(1)
  28   1          {   
  29   2            P2=~GetCode|0xf0;
  30   2          }
  31   1      }
  32          
  33          /*---------------------------------初始化子程序--------------------------------*/
  34          void init(void)
  35          {
  36   1          EA=1;                      //打开CPU总中断请求
  37   1              EX0=1;                     //打开INT0中断请求   
  38   1              IT0=1;                     //设定INT0的触发方式为脉冲负边沿触发  
  39   1      }
  40          
  41          /*-------------------------------200us精确延时---------------------------------*/
  42          void delay_200(void) 
  43          {
  44   1          uchar i,j;
  45   1              for(i=0x05;i>0;i--)
  46   1              for(j=0x12;j>0;j--);
  47   1      }
  48          
  49          /*-------------------------------250us精确延时---------------------------------*/
  50          void delay_250(void) 
  51          {
  52   1          uchar i,j;
  53   1              for(i=0x05;i>0;i--)
  54   1              for(j=0x17;j>0;j--);
  55   1      }
C51 COMPILER V7.06   2262                                                                  08/01/2006 22:20:06 PAGE 2   

  56          
  57          /*-------------------------------131ms精确延时--------------------------------*/
  58          void delay_131(void) 
  59          {
  60   1          uchar i,j;
  61   1              for(i=0xfe;i>0;i--)
  62   1              for(j=0xfe;j>0;j--);
  63   1      }
  64          
  65          /*-------------------------外部中断0子程序(解码程序)---------------------------*/
  66          void INT0_intrupt(void) interrupt 0 using 1
  67          {
  68   1              uchar i,j;
  69   1              bit BitState_2;                                           
  70   1              EX0=0; 
  71   1      //////////////////////////////找起始位//////////////////////////////////////////
  72   1              for(i=0;i<50;i++);
  73   1              if(P3_2==1)  goto kk;
  74   1      
  75   1              while(P3_2==0);
  76   1              for(i=0;i<50;i++);
  77   1              if(P3_2==0)  goto kk; 
  78   1                      
  79   1              delay_200();
  80   1              if(P3_2==1)  goto kk;
  81   1      
  82   1              for(i=15;i>0;i--)                                       //重复20次,检测在3750微秒内出现高电平就退出解码程序
  83   1              {    
  84   2                      delay_200();                    
  85   2                      if(P3_2==1) goto kk;
  86   2              }                                   
  87   1              
  88   1              while(P3_2==0);
  89   1      
  90   1      ///////////////////////////////接收数据///////////////////////////////////////////
  91   1          
  92   1      
  93   1              for(j=0;j<3;j++)                    
  94   1              {
  95   2                      for(i=0;i<8;i++)
  96   2                      { 
  97   3                  delay_250();
  98   3                              BitState_2=P3_2;                
  99   3                              ReadCode[j]=ReadCode[j]<<1;
 100   3                              ReadCode[j]=ReadCode[j]|BitState_2; 
 101   3                              if(P3_2==1) while(P3_2==1);
 102   3                              while(P3_2==0);
 103   3                                                      
 104   3                      }
 105   2              }
 106   1      ////////////////////////////////校验及运算数据/////////////////////////////////////
 107   1          for(i=0;i<3;i++)
 108   1          {
 109   2             if((~(ReadCode[i]|0x55))&((ReadCode[i]&0x55)<<1)!=0x00)   goto kk;    //校验
 110   2          } 
 111   1          GetCode=0x00;
 112   1          for(i=0;i<8;i++)
 113   1          {
 114   2            GetCode |=((ReadCode[2]>>i)&(ReadCode[2]>>(i+1))&0x01<<i);             //运算
 115   2          }
 116   1      //////////////////////////////////////////////////////////////////////////////////
 117   1          delay_131();
C51 COMPILER V7.06   2262                                                                  08/01/2006 22:20:06 PAGE 3   

 118   1              delay_131();
 119   1              delay_131();
 120   1          delay_131();  
 121   1      kk:     EX0=1;
 122   1      }
 123          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    252    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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