📄 wxjm.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 + -