C51单片机如何从PC机串口接收字符串?

 我来答
张丰田ZFT
推荐于2016-01-22 · TA获得超过313个赞
知道答主
回答量:38
采纳率:0%
帮助的人:23万
展开全部
我的程序的一部分,供参考

//主流程
void main(void)
{
//系统初始化
SCON = 0x50; //串口方式为1,SM2= 0,TB8= 1
PCON = 0x80; // SMOD=1
TMOD = 0x22; //设定定时器0/1的工作模式为方式2
//设置T0中断的定时时间为1/7200毫秒
TH0 = 0x00;
TL0 = 0x00;
//设置异步串口的波特率
//TH1 = 0x0f4; //OSC = 11.0592MHz bps = 4800 SMOD=1
//TL1 = 0x0f4;
TH1 = 0x0fd; //OSC = 11.0592MHz bps = 19200 SMOD=1
TL1 = 0x0fd;
//设置中断优先级,T0中断为高优先级中断,其他为低优先级中断
IP = 0x02; // 设置中断优先级--T0为高优先级,其他低

ET0 = 1; //定时器0中断
ES = 1; //串行接口中断
EA = 1; //系统中断允许

TR0 = 1; //启动定时器0
TR1 = 1;
......................

//串口接收中断处理程序
//发送采用查询处理
void SerialComm(void) interrupt 4
{
_pReceive[_cReceive] = SBUF;
_cReceive ++;
if(_cReceive >= RecBuffSize) _cReceive = 0;
RI = 0;
}

//串口发送一个字节
//senddata:需要发送的数据
void SendOneByte(unsigned char senddata)
{
ES = 0;
TI = 0;
SBUF = senddata;
while(TI == 0);
TI = 0;
ES = 1;
}
jckwka
2011-01-22 · TA获得超过1414个赞
知道小有建树答主
回答量:1119
采纳率:0%
帮助的人:832万
展开全部
如果51采用的是串行方式1通信的话,也是最常用的。
那么PC给51是一帧一帧传送的,一帧共10位,1位起始位(0),8位数据位,1位停止位(1)。
51的RXD检测到负跳变后,将8位数据移入SBUF,停止位进入RB8,并请求中断,这样一帧就接受了。
数据大致是这样接收的,与你所说的结束标志应该没什么关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
零奕声校香
2019-02-10 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:32%
帮助的人:655万
展开全部
1、单片机串口不管从哪
接收数据
都是遵循串口协议的。字符串就是一个挨一个的ASKII码,中间没有加任何东西。2、不发字符串结束标志。3、回车符可以发送,但具体发不发送看你程序了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LYQGXH
2011-01-21 · TA获得超过409个赞
知道小有建树答主
回答量:314
采纳率:100%
帮助的人:231万
展开全部
哈哈,这个你要多看看和单片机串口通迅有关的书,我认为,一个是要有串口线把电脑和单片机连起来,第二个是要有串口调试软件,这个在百度上搜一下,有很多的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式