void call_user_sent()
{
static bit data_flag=0;
static unsigned char a=0,b=0,c=0;
TRISB5=1;
TRISB2=0;
if(!data_flag) //起始头
{
c++;
if(c==1) RB2=0;
if(c==41) RB2=1;
if(c>=51)
{
c=0;
data_flag=1;
}
}
if(data_flag) //数据开始
{
c++;
if(c==1) RB2=0;
if(c==4)
{
if(a==0)
{
if((send_user[a]&0x80)!=0) RB2=1;
}
else if(a!=0)
{
if((send_user[a]&0x08)!=0) RB2=1;
}
}
if(c==7)
{
if(a==0)
{
if((send_user[a]&0x80)==0) RB2=1;
}
else if(a!=0)
{
if((send_user[a]&0x08)==0) RB2=1;
}
}
if(c>=10)
{
c=0;
b++;
send_user[a]<<=1;
if((a==0)&&(b>=8))
{
b=0;
a++;
}
if((a!=0)&&(b>=4))
{
b=0;
a++;
if(a>=CODELEN)
{
a=0;
data_flag=0;
sent_user_flag=0;
}
}
}
}
}
void call_user_rece()
{
static bit hl;
static bit hl_flag;
static unsigned char low=0,high=0,count=0;
static unsigned char temp=0,rece_flag=0;
static unsigned char p,q;
TRISB5=1;
TRISB2=1;
hl=RB5;
if(hl)
{
if(!hl_flag)
{
hl_flag=1;
low=count;
count=0;
}
else count++;
}
else
{
if(hl_flag)
{
hl_flag=0;
high=count;
count=0;
if(rece_flag)
{
temp<<=1;
if((4<9))
{
temp=temp|0x00;
}
else if((0<4))
{
temp=temp|0x01;
}
q++;
if((p==0)&&(q>=8))
{
q=0;
rece_user[p]=temp;
p++;
}
if((p!=0)&&(q>=4))
{
q=0;
rece_user[p]=temp&0x0f;
p++;
if(p>=CODELEN)
{
p=0;
rece_flag=0;
if((0xee==rece_user[0])||(0xfa==rece_user[0]))
{
Alarm(); //报警
}
rece_user_proc=1; //执行接收处理函数
}
}
}
else
{
if(high>30)
{
p=0;
q=0;
temp=0;
rece_flag=1;
}
}
}
else count++;
}
}
上一篇:喜欢单片机的同学快来看啊,过来人的经验告白
下一篇:按键检测非阻塞代码(2种模式)
推荐阅读最新更新时间:2024-11-18 10:04
设计资源 培训 开发板 精华推荐
- LTC3859AIUHF 高效率、三路 24V/1V/1.2V 同步降压/升压转换器的典型应用电路(采用 12V 输入电压)
- SPIRIT1-低数据速率收发器-169 MHz-全套件
- 485传感-STM8L-通用版
- 51单片机无线下载器
- STC程序烧写自动下载工具CH340N
- LT3091EDE 低噪声 4 象限电源的典型应用
- NUVOTON 无线充参考方案
- 使用 LT6202 将 ±10V 双极性信号转换为 0V 至 5V 输入信号到 LTC2367CMS-16 的典型应用
- LT1117CM-5 电池充电器的典型应用
- LTM4643EV 4V 至 20V 输入、四路 1V、1.5V、2.5V 和 3.3V 输出以及比例跟踪降压稳压器的典型应用