标题:
51单片机串口接收多个数据
[打印本页]
作者:
奔四
时间:
2016-5-31 09:20
标题:
51单片机串口接收多个数据
刚学51,串口已经弄好,可以用助手接收和发送字符,
想做一个比较用的程序,就在收程序上面搞不掂了.请大侠指点.
需要的功能:
1,串口接收数据,(什么数据都可以,比如说用助手发一个字) 最多收10个.
2,把第一个数据做基准,分别与第2个以后的数据做比较,判断2-8次是否正确,
如果正确分别每次都能控制P2.1灯亮一次
如果错误分别每次都能控制P2.2灯亮一次
/*#include <reg52.h> //52系列单片机头文件
#define uint unsigned int
#define uchar unsigned char
sbit led1=p^2.1;
sbit led1=p^2.2;
uchar c;
void SendOneByte();
void inituart(void) //初始化各寄存器
{
TMOD = 0x20; //高4位用于T1,0010=8位自动重载定/计 C/T=O定时器 1=计数器
SCON = 0x50; //串口 7,6位用01 表用工作方式1,10位异位收发器 4位=1允许接收数据
TH1 = 0xFD; //高4位装入常数
TL1 = TH1; //低4位装入常数 数值与波特率有关.
PCON = 0x00; //7=1是波特率倍增,常用7=0
EA = 1; //开总中断
ES = 1; //开串行中断允许
TR1 = 1; //启动定时器
}
void main(void)
{
inituart(); //初始化
}
void UARTInterrupt(void) interrupt 4 //中断的第4种方式,串行中断
{
if(RI) //RI=1 执行括号中指令,RI=0 不执行括号中指令
{
RI = 0; //将RI标志位清零
c=SBUF; //将SUBF中的数据放到c中
SendOneByte();
}
else
TI = 0;
}
void SendOneByte()
{
SBUF = c;
while(!TI);
TI = 0;
}*/
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1