求:stc8G系列 UART 带奇偶校验的例程
/***************串口初始化函数 *****************/void UART_config(void)
{
COMx_InitDefine COMx_InitStructure; //结构定义
COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
COMx_InitStructure.UART_BRT_Use = BRT_Timer4; //使用波特率, BRT_Timer2, BRT_Timer4 (注意: 串口2固定使用BRT_Timer2)
COMx_InitStructure.UART_BaudRate= 115200ul; //波特率, 110 ~ 115200
COMx_InitStructure.UART_RxEnable= ENABLE; //接收允许, ENABLE或DISABLE
COMx_InitStructure.UART_Interrupt = ENABLE; //中断允许, ENABLE或DISABLE
COMx_InitStructure.UART_Polity = Polity_0; //指定中断优先级(低到高) Polity_0,Polity_1,Polity_2,Polity_3
COMx_InitStructure.UART_P_SW = UART4_SW_P02_P03; //切换端口, UART4_SW_P02_P03,UART4_SW_P52_P53
UART_Configuration(UART4, &COMx_InitStructure); //初始化串口3 UART1,UART2,UART3,UART4
PrintString4("STC8 UART4 Test Programme!\r\n"); //UART4发送一个字符串
}
stc8g代码风格,蛮好.有官方提供的库函数此乃一大进步;
不过,stc8g库函数的例子没有奇偶校验,现在产品上面通讯需要用到
初始化时使用9位数据位。
接收时校验位在RB8。
发送时:
ACC = dat;
TB8 = P;//或TP8 = ~P
SBUF = ACC; 小李非刀 发表于 2021-3-3 22:29
初始化时使用9位数据位。
接收时校验位在RB8。
发送时:
能不能在stc例子说明更改一下测试正常的奇偶检验选项的例程 将来 也可以作为stc库文件发布
附件是官方网站下载的不带奇偶校验的例子
lb0857 发表于 2021-3-4 08:37
能不能在stc例子说明更改一下测试正常的奇偶检验选项的例程 将来 也可以作为stc库文件发布
附件 ...
按我上面说的改动一下就可以了。 小李非刀 发表于 2021-3-20 21:54
按我上面说的改动一下就可以了。
你没测试过吧,或者编译软件需要设置优化程度么?我按默认的优化,P根本不好用。感觉根本没把数据赋值给ACC。重新写个小程序才算把校验做正确了。 bluerain 发表于 2021-6-14 19:26
你没测试过吧,或者编译软件需要设置优化程度么?我按默认的优化,P根本不好用。感觉根本没把数据赋值给A ...
我用奇偶校验都是用P,P是51的状态寄存器的一个校验位。居然质疑我没测试过,90年代就用到现在。STC-ISP里的通信就用的奇校验。
页:
[1]