📄 main.c
字号:
//**********************************************
//文件:MAIN.C
//版本:V1.0
//编写人:马一兵
//编写日期:2005年12月10日
//修改日期:
//功能说明:
//**********************************************
#include<reg52.h>
#include<string.h>
#include <intrins.h>
sbit DATA0=P1^0;
sbit DATA1=P1^1;
unsigned char Wigen_counter;
unsigned char Wigen_ReciveBuf[27];
/******************************************************************/
/******************************************************************/
/***************************主程序*********************************/
/******************************************************************/
/******************************************************************/
void main(void)
{
unsigned char idata even;
unsigned char idata odd;
unsigned char idata i,j;
unsigned char idata WIGEN_BUF[6];
//外中断0初始化 //用于捕获WIGEN信号
EX0=1; //允许外中断0
PX0=1; //置为最高优先级
IT0=1; //负边沿触发中断
//开总中断
EA=1;
Wigen_counter=0;
while(Wigen_counter<26);
//判断奇偶校验是否正确
even=0;
for(j=0;j<3;j++)
{
WIGEN_BUF[j]=0;
for(i=(j*4);i<(j*4+4);i++)
{
WIGEN_BUF[j]=(WIGEN_BUF[j]<<1)&0xfe;
if(Wigen_ReciveBuf[i+1]==1)
{
WIGEN_BUF[j]=WIGEN_BUF[j]|0x01;
even=(~even)&0x01;
}
}
}
if(even!=Wigen_ReciveBuf[0])
{
//清除标志
Wigen_counter=0;
goto end;
}
odd=1;
for(j=3;j<6;j++)
{
WIGEN_BUF[j]=0;
for(i=(j*4);i<(j*4+4);i++)
{
WIGEN_BUF[j]=(WIGEN_BUF[j]<<1)&0xfe;
if(Wigen_ReciveBuf[i+1]==1)
{
WIGEN_BUF[j]=WIGEN_BUF[j]|0x01;
odd=(~odd)&0x01;
}
}
}
if(odd!=Wigen_ReciveBuf[25])
{
//清除标志
Wigen_counter=0;
goto end;
}
//清除标志
Wigen_counter=0;
//wigen数据接收正确,存在WIGEN_BUF中,加入你的处理
end:
Wigen_counter=0;
}
/******************************************************************/
/****************************外中断2子程序************************/
/******************************************************************/
void wigenISR (void) interrupt 0 using 1
{
//如果DATA0=1,则表示DATA1=0;
if(DATA0) Wigen_ReciveBuf[Wigen_counter++]=1;
else Wigen_ReciveBuf[Wigen_counter++]=0;
//D0和D1不能同时为0;
IE0 = 0; //Clear interrupt request flag
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -