51单片机串口通信是怎样测试起始位的

a091003040421 2012-05-03 01:47:37
有懂的人麻烦给我讲一下 顺便给我发一个双机通信的简单代码 谢谢!!
...全文
472 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2012-05-06
  • 打赏
  • 举报
回复
单片机的T/R的起始位由SBUF自己管理,不用你管,只要打开通信,写sbuf既发送,接收中断后读sbuf即可
田子方 2012-05-06
  • 打赏
  • 举报
回复
默认情况下T线是高电位,1号方式下UART,当出现0时就意味着是起始位了,然后两个单片机根据设定好的波特率进行移位处理,当数据发送完成以后,T线又保持高电位了。好比1602,又好比18b20,,,起始位意味着要与default不同。
lenglengqingwa 2012-05-06
  • 打赏
  • 举报
回复
SBUF=a;发送
a=SBUF;接收

先设置 RX,TX等
woshi_ziyu 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

这么说我在发送时直接将0xfe这个数据付给SBUF就可以输出了吗?不需要管起始位吗?(我用的是串口通信方式是1位起始位8位数据位1位截止位)引用 3 楼 的回复:
你只要设好好寄存器使能后往里面扔数据就可以啦
[/Quote]
对于单片机不需要关心起始位 属于硬件完成的 对于功能强大一些的 则可以通过读写相应寄存器的值来改变串口
如此美丽的你 2012-05-05
  • 打赏
  • 举报
回复
通过TX和RX控制器实现
aydf1 2012-05-04
  • 打赏
  • 举报
回复
串口是单片机自带的资源,直接用就行。用户只需要设置寄存器
yibin.cai 2012-05-04
  • 打赏
  • 举报
回复
串口是单片机自带的资源,直接用就行。用户只需要设置寄存器
nandou 2012-05-04
  • 打赏
  • 举报
回复
是的

[Quote=引用 5 楼 的回复:]
这么说我在发送时直接将0xfe这个数据付给SBUF就可以输出了吗?不需要管起始位吗?(我用的是串口通信方式是1位起始位8位数据位1位截止位)

引用 3 楼 的回复:
你只要设好好寄存器使能后往里面扔数据就可以啦
[/Quote]
a091003040421 2012-05-03
  • 打赏
  • 举报
回复
我想用A机发送代码然后送到B机由B机的LED灯显示出来 能弄好的我加分
a091003040421 2012-05-03
  • 打赏
  • 举报
回复
这是我写的发送的代码
#include <reg51.h>
void InitUART(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xCC;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;//启动定时器
}

void main(void)
{
InitUART();
while(1)
{

SBUF=0X00;
while(!TI)
TI=1;

}
}

这是接收机的代码你们看看有问题吗?
#include <reg52.h>
unsigned char a,flag=0;
void SendOneByte(unsigned char c);
void InitUART(void)
{
TMOD=0x20;
SCON=0x50;
TH1=0xCC;
TL1=TH1;
PCON=0x00;
EA=1;
ES=1;
TR1=1;
}

void main(void)
{
InitUART();
if(flag==1)
P1=a;

}
//接收
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
a=SBUF;
flag=1;
}
}

yoveldf 2012-05-03
  • 打赏
  • 举报
回复
you can try it
a091003040421 2012-05-03
  • 打赏
  • 举报
回复
这么说我在发送时直接将0xfe这个数据付给SBUF就可以输出了吗?不需要管起始位吗?(我用的是串口通信方式是1位起始位8位数据位1位截止位)[Quote=引用 3 楼 的回复:]
你只要设好好寄存器使能后往里面扔数据就可以啦
[/Quote]
dsoyy 2012-05-03
  • 打赏
  • 举报
回复
发送缓存寄存器,移位寄存器。
yoveldf 2012-05-03
  • 打赏
  • 举报
回复
你只要设好好寄存器使能后往里面扔数据就可以啦
a091003040421 2012-05-03
  • 打赏
  • 举报
回复
我想问的是单片机是怎样发送这个起始位的呢?例如我用A单片机的TXD发送给B机的RXD[Quote=引用 1 楼 的回复:]
硬件检测的
[/Quote]
net_friends 2012-05-03
  • 打赏
  • 举报
回复
硬件检测的

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧