📄 wuxian_rx22.c
字号:
//#include <stc12c2052AD.H>// 标准库的头文件
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
bit read_flag=0;
sbit baojing=P1^4;
unsigned char time;
void init_serialcomm(void)
{
SCON = 0x50; //SCON: serail mode 1 8 UART enable ucvr
TMOD |= 0x20; //TMOD: timer 1 mode 2 8 reload
PCON |= 0x00;
TH1 = 0x40;
IE |= 0x90; //Enable Serial Interrupt
TR1 = 1; // timer 1 run
TI=1;
}
//向串口发送一个字符
void sen(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
void delay(uint t)
{
uchar i;
while(t--)
{ for (i=200;i>0;i--);
{}}
}
uchar jingdi(void)
{
uchar i,temp;
temp=1;
for(i=3;i>0;i--)
{
baojing=0;
delay(500);
baojing=1;
delay(100);
}
return temp;
}
/*void serial () interrupt 4 using 3
{
if(RI)
{
unsigned char ch;
RI = 0;
TI=1;
ch=SBUF;
sen(ch);
read_flag=1;
}
read_flag=0;
}
*/
main()
{ unsigned char sj, j,q,k,i;
//uchar shuju[1];
init_serialcomm(); //初始化串口
baojing=0;
delay(100);
baojing=1;
while(1)
{
start:
RI = 0;
if(j==5||q==5)///if1
{j=0;
q=0;
jingdi();
goto start;
}
else{
for(k=5;k>0;k--)
delay(100);
RI = 0;
sen(0x02);
if(RI==1){ //2if
sj=SBUF;
delay(200);
sen(sj);
if ((i==0)&&(sj==0x09)) //3if
{
j=0;
q=0;
for(k=5;k>0;k--)
delay(100);
sen(sj);
goto start;
}
else{
j++;
q=0;
goto start;
} //3if //判断是否接收到数据如果是66继续报接收信号!如果接受不到开始记数超过一定时间报警!
}
else{
q++;
j=0;
for(k=2;k>0;k--)
delay(500);
sen(0x07);
goto start;
} //2if
}//if1
}//while
}//main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -