目的:方便程序的调试,提供效率,减少工作累,可以不在线调试编程时显示实时数据,特别产品不带显示的或者MCU是OPT的,有很大的帮助。
过程:将要看的数据发送出来,另一个板(一个带有显示的就OK了,显示就看个人的了,我之前用12864显示,后面坏了,就用4位数码管了)接收显示出来。
资源:通讯口只要2个IO(接收一个,发送一个),定时器2个(接收一个,发送一个)。
此篇是本人的接收模块,由于手头没有什么显示板,只有一个中颖的,带有4为数码管,就用此板作模拟接收。
此接收发送模块已经使用3年,一点问题都没有的哦!!!
如要沟通,请联系QQ:448704229
以下是接收模块:
//REMOTE 为接收IO ,设置为输入
static uint8 rx_ram0=0;
static uint8 rx_ram1=0;
static uint8 rx_ram2=0;
static uint8 bits_count=0;
static uint8 tx_ram0=0;
static uint8 tx_ram1=0;
static uint8 tx_ram2=0;
static uint8 temp2=0;
static uint8 us100_timer=0;
bit f_endcode=0;
bit B_nextbit=0;
bit send_enable_flag=0;
uint8 temp1=0;
uint8 temp=0;
void recievr_ird(void)
{
static uint8 TN=0;
static uint8 REMOTE_NUM=0;
if(TN<=200)
{
TN++;
}
if(!F_REMOTE)
{
if(REMOTE)
{
if(!F_RISE_YK)
{
F_RISE_YK=1;
if(F_YK_FIRST)
{
if(TN>=5)
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
else
{
TN=0;
}
}
else
{
if(TN>=40)
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
else
{
if(TN>=20)
{
F_YK_FIRST=1;
TN=0;
REMOTE_NUM=0;
tx_ram0=0;
}
else
{ //EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
}
}
}
}
else
{
if(F_RISE_YK)
{
F_RISE_YK=0;
if(F_YK_FIRST)
{
if(!F_YK_SECOND)
{
if(TN>=18)
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
else
{
if(TN>=12)
{
F_YK_SECOND=1;
TN=0;
REMOTE_NUM=0;
tx_ram0=0;
}
else
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
}
}
else
{
tx_ram2=tx_ram2>>1;
if(tx_ram1&0x01)
{
tx_ram2=tx_ram2|0x80;
}
else
{
tx_ram2=tx_ram2&0x7f;
}
tx_ram1=tx_ram1>>1;
if(tx_ram0&0x01)
{
tx_ram1=tx_ram1|0x80;
}
else
{
tx_ram1=tx_ram1&0x7f;
}
tx_ram0=tx_ram0>>1;
if(TN>=12)
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
else
{
if(TN>=6)
{
tx_ram0|=0x80; ///
B_nextbit=1;
}
else
{
if(TN<2)
{
//EER
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
else
{
tx_ram0&=0x7f; ///
B_nextbit=1;
}
}
}
}
}
else
{
//EER
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
}
}
}
if(B_nextbit)//移位操作//<intrins.h> temp = _cror_(temp,1);_rcl
{
B_nextbit=0;
TN=0;
REMOTE_NUM++;
if(REMOTE_NUM>=24)
{
rx_ram0=tx_ram2;
F_REMOTE=1;
rx_ram1=tx_ram1;
rx_ram2=tx_ram0;
F_REMOTE=0;
TN=0;
tx_ram0=0;
REMOTE_NUM=0;
F_YK_FIRST=0;
F_YK_SECOND=0;
}
}
}
分享到:
相关推荐
红外接收发送程序红外接收发送程序红外接收发送程序红外接收发送程序
这是基于STM32设计的NEC红外线协议解码程序。可以解析红外线遥控器传输过来的数据,完成解码,做红外线遥控小车、短距离无线控制、是比较合适的。 本程序是采用定时器+中断方式完成协议解码,是比较经典的一种解析...
红外接收C程序
红外线遥控解码接收程序-C语言,延时子程序,外部中断0程序,红外解码程序,处理红外遥控键值
红外协议验证程序,不附带原理图,通过IO模拟串口实现
1838红外接收模块的使用方法说明书。详细!!!!!!
本代码在stc2c5a单片机实验成功,已经模块化,容易移植。
基于单片机的红外发射与接收C语言程序,at89c51和ls0038芯片 上的
C语言30-红外发射程序(NEC码)-使用PWM4产生38KHz载波(STC32G-DEMO-CODE-220311kw)C语言30-红外发射程序(NEC码)-使用PWM4产生38KHz载波(STC32G-DEMO-CODE-220311kw)C语言30-红外发射程序(NEC码)-使用PWM4产生38...
两个AT89C51模拟红外遥控通信proteus仿真源文件(含C程序源码),是通过两个单片机IO互联模拟红外,但是需要解码,有1602显示
红外门禁系统——PROTUES c语言版 红外门禁系统——PROTUES c语言版 红外门禁系统——PROTUES c语言版
红外遥控 红外一体化接收头,红外遥控的仿真,红外解码代码,遥控代码
基于multisim实现的红外收发系统仿真电路图,分为红外发射模块,红外接收模块。
cc2530红外接收发射模块代码;基于zigbee小板 红外接收 通过串口打印
C语言29-红外遥控接收程序(NEC码)-数码管显示用户地址和键值(STC32G-DEMO-CODE-220311kw)C语言29-红外遥控接收程序(NEC码)-数码管显示用户地址和键值(STC32G-DEMO-CODE-220311kw)C语言29-红外遥控接收程序(NEC码...
红外解码 C语言 程序代码
红外接收 完整程序(已调试).欢迎下载.
51单片机普通IO实现红外接收模块.rar
激光与红外复合隐身材料——掺杂半导体.pdf
很好的红外发射模块程序,有细细注释,便于阅读理解