标题: 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