标题:
一款基于锦锐单片机遥控接收1527码的软解码程序
[打印本页]
作者:
libodianzi
时间:
2024-3-25 16:08
标题:
一款基于锦锐单片机遥控接收1527码的软解码程序
一款基于锦锐单片机遥控接收1527码的软解码程序
#ifndef _MAIN_C_
#define _MAIN_C_
/*********************************************************************************************************************/
#include "ca51f_config.h"
#include "includes\ca51f3sfr.h"
#include "includes\ca51f3xsfr.h"
#include "includes\gpiodef_f3.h"
#include "Library\includes\delay.h"
#include "Library\includes\uart.h"
#include "Library\includes\system_clock.h"
#include "Library\Includes\rtc.h"
#include "Library\Includes\pwm.h"
#include "includes\system.h"
#include "Library\includes\adc.h"
#include "Library\includes\wdt.h"
/*********************************************************************************************************************/
#include "TS_Lib\Includes\ts_configuration.h"
#include "TS_Lib\Includes\ts_def.h"
#include "TS_Lib\Includes\ts_api.h"
#include "TS_Lib\Includes\ts_service.h"
/*********************************************************************************************************************/
#include "tm1628.h"
#include "time.h"
//#include "74hc595.h"
unsigned char read_inner_trim(void)
{
unsigned char value;
FSCMD = 0x80;
PTSH = 0x00;
PTSL = 0x24;
FSCMD = 0x81;
value = FSDAT;
FSCMD = 0;
return value;
}
void SystemInit(void)
{
#ifdef LVD_RST_ENABLE
LVDCON = 0xE1; //设置LVD复位电压为2V
#endif
#if (SYSCLK_SRC == PLL)
Sys_Clk_Set_PLL(PLL_Multiple);
#endif
#ifdef UART0_EN
Uart0_Initial(UART0_BAUTRATE);
#endif
#ifdef UART1_EN
Uart1_Initial(UART1_BAUTRATE);
#endif
#if (RTC_CLK_SELECT == IRCL)
//看门狗时钟源为IRCL
CKCON |= ILCKE; //使能IRCL
WDCON = WDTS(WDTS_IRCL) | WDRE(WDRE_reset); //设置看门狗时钟源为ILCKE,模式为复位模式
#elif (RTC_CLK_SELECT == XOSCL)
CKCON |= XLCKE;
while(!(CKCON & XLSTA));
WDCON = WDTS(WDTS_XOSCL) | WDRE(WDRE_reset); //设置看门狗时钟源为XOSCL,模式为复位模式
#endif
WDVTHH = 0; //看门狗复位阈值高八位设置 当前值为5s
WDVTHL = 75; //看门狗复位阈值低八位设置
WDFLG = 0xA5;
ADCFGH = (ADCFGH&0xC0) | VTRIM(read_inner_trim()); //加载ADC内部基准校准值
}
void main(void)
{
unsigned char i;
SystemInit();
EA = 1;
TS_init();
Timer1_mode2_Init();
// Uart0_PutChar(0xab);
user_EEprom_init();
Read_Buff();
Out0=0;
Out1=0;
Out2=0;
Out3=0;
while(1)
{
TS_Action();
Study_Key();
Study_RF();
if(rf_Ok&&(!Study_flag)) //非学习状态
{
rf_Ok = 0;
KeyTo1527(); //转换数据
for(i=0;i<KEY_num;i++)
{
if((RfBuff[0]==key_number[i*3+1])&&(RfBuff[1]==key_number[i*3+2])&&(RfBuff[2]==key_number[i*3+3]))
{
// VT = 1;
Hold_Time = 0;
if(!LM) //点动
{
if((RfBuff[3]&0x10) == 0x10) Out0 = 0;
if((RfBuff[3]&0x20) == 0x20) Out1 = 0;
if((RfBuff[3]&0x40) == 0x40) Out2 = 0;
if((RfBuff[3]&0x80) == 0x80) Out3 = 0;
Uart0_PutChar(RfBuff[3]);
}
else if(LM&&!Decod_Ok) //自锁
{
if((RfBuff[3]&0x10) == 0x10) Out0 = !Out0;
if((RfBuff[3]&0x20) == 0x20) Out1 = !Out1;
if((RfBuff[3]&0x40) == 0x40) Out2 = !Out2;
if((RfBuff[3]&0x80) == 0x80) Out3 = !Out3;
// Uart0_PutChar(RfBuff[3]);
}
Decod_Ok = 1;
break;
}
}
}
}
}
#endif
复制代码
原理图: 无
仿真: 无
代码:
CA51F3_1527解码程序.7z
(97.79 KB, 下载次数: 18)
2024-3-25 18:32 上传
点击文件名下载附件
程序
下载积分: 黑币 -5
作者:
fj51hei
时间:
2024-3-25 21:42
楼主,调试命令放在那个文件?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1