找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6409|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机串口接收多个数据

[复制链接]
跳转到指定楼层
楼主
ID:124169 发表于 2016-5-31 09:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚学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;
}*/

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表