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

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分,真值!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-30
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运行,开始产生波特率
}
你可以用串口监视工具来查看单片机发出的数据是否正确,祝你成功
第2个回答  2009-11-30
学习靠自己,知道吗?
相似回答