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

📄 wxjm.c

📁 自己调试通过的无线解码程序!支持各种无线传感器
💻 C
字号:
#include <stc89c51rc.h> 
#include <rs232_def.h>
#include <intrins.h>

sbit RFBIT = P3^2;

void delay_ms(void)                         //毫秒延时  
 {     
     unsigned int i; 
     for (i=0;i<140;i++)  
          { 
          } 
 } 

void delay_nms(unsigned int n)              //延时周期 
 { 
     unsigned int i; 
     for (i=0;i<n;i++) 
          { 
           delay_ms(); 
          } 
 } 
    
 unsigned long decode(void)                 //无线解码 
 { 
     unsigned long DATA;                    //记录数据 
     unsigned char count,i;                 //暂时计数 
          
/*一共接收三字节*/         
     
     DATA=0;                                //   
     for (count=0;count<24;count++)         //开始收集 
          { 
            
/*测量高电平宽度*/         

       i=0;                                 //宽度计数 
           while (RFBIT)           //高位计数 
            {        
                #pragma asm
                nop;
               #pragma endasm

            
                 i++;                  //计数增加  
                                        
                 if (i>192) goto end;  //限时解码 
                }                                    
                 
/*分辨出电平高低*/                 
        
          DATA*=2;                       //数据左移 
                  
      if (i<64)                             //分辨高低  
           {     
            if (!((56>i)&(i>24))) goto end;     //电平合法                                 
            DATA+=0;                            //记低电平 
           } 
            
          else 
           {      
            if (!((168>i)&(i>72))) goto end;    //电平合法                                 
            DATA+=1;                            //记高电平 
           } 
            
/*测量低电平宽度*/         
    
           while (!(RFBIT))               //低位计数 
            {        
               #pragma asm
                nop;
               #pragma endasm


                 i++;                        //计数增加  
                                        
                 if (i>224) goto end;        //限时解码 
                }           
                 
/*低电平是否过窄*/                 
                  
           if (i<96) goto end;                  //对比宽度                                  
      } 
          
/*解码成功返结果*/         
                                       
         return  DATA;                          //成功返回  
          
/*有误码结束解码*/          
          
     end:          
         return 0;                              //误码结束 
 }   
  
void main(void) 
{ 
        
     
         
         while (1) 
          { 
           //DATA =decode();                      //解码程序 
            
               P3 = 0xff;
		       _nop_();
               P3 = 0;
		       _nop_();

          } 
} 

⌨️ 快捷键说明

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