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

如题所述

我的程序的一部分,供参考
//主流程
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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-07
如果51采用的是串行方式1通信的话,也是最常用的。
那么PC给51是一帧一帧传送的,一帧共10位,1位起始位(0),8位数据位,1位停止位(1)。
51的RXD检测到负跳变后,将8位数据移入SBUF,停止位进入RB8,并请求中断,这样一帧就接受了。
数据大致是这样接收的,与你所说的结束标志应该没什么关系。
第2个回答  2019-11-08
哈哈,这个你要多看看和单片机串口通迅有关的书,我认为,一个是要有串口线把电脑和单片机连起来,第二个是要有串口调试软件,这个在百度上搜一下,有很多的。
相似回答