51单片机如何初始化成8-n-1(8数据位,无奇偶校验位,1停止位)波特率,是用串口的模式几?

来源:百度知道 编辑:UC知道 时间:2024/06/17 15:14:46
51单片机如何初始化成8-n-1(8数据位,无奇偶校验位,1停止位)波特率,是用串口的模式几?本来想用串口的模式1,可是仔细一看,模式1是10异步通信方式,1起始位,8数据位,1停止位?
首先感谢一楼的回答。我还有些疑问,刚才用示波器看了下,当发送0xFF时,示波器显示一位低电平,其余为高电平,这点应该是对的,因为起始位是0.可是为什么发送0xAA时,示波器的(起始位+数据位+停止位)序列是:0 + 0101 0101 + 1,而0x55的序列为:0 +1010 1010 + 1,这两个值好像不对,是相反了,要是调一下刚好对?

用串口的模式1,是10位异步通信方式。
1起始位,8数据位,1停止位,没有奇偶校验位。
这种模式就是:8-n-1(8数据位,无奇偶校验位,1停止位)的模式。
完全符合你的要求。
--------------------
带奇偶校验位的,要用方式2或方式3。
把奇偶校验位,放到TB8上,就可以发送了,这就是偶校验。
接收的奇偶校验位,在RB8中。
--------------------
呵呵,你还用上了示波器!奢侈
你观察的很正确。
记住:串行通信,是“低位在前”。这就对了。
你补充的提问太多了,都足够再开一、二个问题了,这20分,真值!

void uart_init(void)
{
SCON = 0x50 ;//串行方式1, 8-bit数据位,允许接收
TMOD |= 0x21;//定时器1使用模式2,8-bit自动重装用于产生波特率
// PCON |= 0x80;//SMOD=1;波特率增倍
PCON &= 0x7f;//SMOD=0;波特率不增倍
TH1 = 0xfd; //Baud:19200(SMOD=1)或9600(SMOD=0),11.0592MHz
IE |= 0x90; //全局中断开,允许串口中断
TR1 = 1; //定时器1运行,开始产生波特率
}
你可以用串口监视工具来查看单片机发出的数据是否正确,祝你成功

学习靠自己,知道吗?