• 大小: 56KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-05-15
  • 语言: 其他
  • 标签: c++  

资源简介

无线433不使用延时解决按键抖动,长按遥控器按键也只执行一次,快速按遥控器按键又不影响用户灵敏度体验的问题

资源截图

代码片段和文件信息

#include “extern.h“
#include “decode.h“
#include “eeprom.h“
#include “action.h“
#include “pwm.h“


byte start_code=0;
word timecnt0 ;
byte cntint ;
DWORD key ;
byte match_ok=0;
//byte old_key;
word RF_Value_Cnt=0;
word tempkey;
byte key_counter=0;
byte addrl_temp;
byte addrh_temp;
byte RFRecOK=0;
BYTE Address_l=0;
BYTE Address_h=0;
DWORD RF_Key;
DWORD tempsbuf = 0;
DWORD CleanAddrTime=0;
// byte start_flag ;
// byte temp_key = 0;
byte match_flag= 0;  //对码标志
byte Jump_flag = 0;


#define clear_delay 970
void delay(void);
extern bit key_once;
void soft_count(void)     //接受码计数函数
{
if(RF_Value_Cnt<15000)
RF_Value_Cnt++;
if(!IR_Dat)   //低电平
{
timecnt0++;
if(Jump_flag)Jump_flag=0;
}
else
{
if(!Jump_flag)
{
Jump_flag=1;
soft_decode();
timecnt0=0;
}
}


}
void soft_decode(void)                 //接受码处理函数
{

if(start_code ==0)
{
if(timecnt0 >= _start_us_min && timecnt0 <= _start_us_max)//9ms-13ms
{
start_code=1;
tempsbuf=0;    //缓存数
cntint=0;
tempkey=0;
key=0;
}else if(timecnt0<=1){
key_once=0;
}
}
else if((start_code ==1) && (cntint < 24))
{
if(( timecnt0 > _num0_us_min ) && ( timecnt0 <= _num0_us_max ))     //接收到数据 0 
{
tempsbuf=tempsbuf<<1;      //左移一位,从低位开始
cntint++;
}
else if(( timecnt0 > _num1_us_min ) && ( timecnt0 < _num1_us_max )) //接收到数据 1 
{
tempsbuf=tempsbuf<<1;   //左移一位,从低位开始
tempsbuf|=0x01;      //把“1”放入最后一位
cntint++;
}
else       //接收错误 重置接收状态
{
start_code=0;
tempsbuf=0;
cntint=0;
}
}


if(cntint ==24)
{
start_code=0;
tempkey = tempsbuf &0x3ff;          //键值(临时)
        addrl_temp =(tempsbuf >>12 )&0x00000f;
addrh_temp =(tempsbuf >>16 )&0x0000ff;    //取地址
if((!match_ok) && (tempkey == LIGHTKEY))    //对码
{
key_counter++;
if((check_key < 36000) && (key_counter>=25))
{
key_counter=0;
Address_l =addrl_temp;
Address_h =addrh_temp ;    //取对码地址

match_ok=1;
match_flag=1;          //对码标志成功
bWriteFlash =1;           //发起保存信号
FlashDn = 5;



}
}
if((Address_l==addrl_temp&&Address_h==addrh_temp) ||match_flag==0)
{
RF_Key = tempkey;   
RFRecOK=1;
CleanAddrTime = clear_delay;   // 70ms
}
else
{
CleanAddrTime = clear_delay;   // 70ms
}
cntint=0;
timecnt0=0;
}



/* if((timecnt0 > _9ms_min)&&(timecnt0 < _9ms_max)&&(timecnt1>_4_5ms_min)&&(timecnt1<_4_5ms_max)) //?eê???′|àí
{
start_code = 1; //同步码标志
cntint = 0;
longkey_num = 0;
}
else if((timecnt0>_9ms_min)&&(timecnt0<_9ms_max)&&(timecnt1>_2_5ms_min)&&(timecnt1<_2_5ms_max)) //3¤°′?ü??′|àí
{
if(longkey_num > 5)
{
longkey_num = 6;
longkey = old_key;  //长按键码标志
long_flag=1;
}
else
{

longkey_num++;
}
}
else if((start_code==1)&&(cntint<32))
{
if((timecnt0>_0_56ms_min)&&(timecnt0<_0_56ms_max)&&(timecnt1>_0_56ms_m

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1101  2020-10-14 16:07  decode.h
     文件       63104  2020-10-16 11:27  无线433判断遥控器按键弹起.docx
     文件        3961  2020-10-15 08:31  decode.c

评论

共有 条评论