[讨论] STC12C5A08S2单片机 串口2 工作方式3 奇偶校验问题

zsm180   2010-5-9 11:09 楼主
现在需要使用串口2,工作方式选择方式3

我现在的配置如下:
    S2CON   = 0xd0;            //1101,0000 11位可变波特率,奇偶校验位
    BRT     = RELOAD_COUNT;
    AUXR    = 0x10;
    IE2     = 1;                //允许串口2中断
    EA      = 1;                //开总中断

因为S2CON不支持位寻址,所以我做奇偶校验使用如下方式:
奇偶校验(发送):
unsigned char parity = 0x00;         
ACC = val;
parity = PSW&0x01;
parity <<= 3;
S2CON |= parity;  //设置S2TB8
奇偶校验(接收):
ACC = S2BUF;
CRC = PSW&0x01;
CRC = CRC<<2;
if (CRC == (S2CON&0x04))

在测试过程中数据出错:
测试流程:向串口2发送数据,然后串口2把接收的数据返回PC
PC机to单片机:30 31 30 31 30 30 30 30 37 46 46 43 0D
单片机toPC机:3F 30 31 3F 30 31 3F 30 3F 30 30 3F 3F 30 37 46 46 43 0D

请教各位大虾,我的错误在什么地方,谢谢各位大虾

回复评论 (3)

不晓得 帮楼主顶起
点赞  2010-5-10 11:00
程序没问题的
点赞  2012-10-19 19:18
S2CON |= parity;  //设置S2TB8
需要考虑0和1两种情况。不同情况处理方式不同。
点赞  2013-1-25 20:14
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复