STC15系列单片程序移植到STC8A8K系列时串口不能通信的问题

STC15系列单片程序移植到STC8A8K系列时串口不能通信的问题:

产品升级改型,需要将原来使用的STC15系列单片机改为STC8A8K64S4系列,其中用到串口COM1,COM2,串口COM1作MODBUS口,兼调试口。刚开始想这也没有什么,应该直接转换就可以,改为STC8的头文件,然后直接下载,结果程序下载后,没有串口输出。立马去查STC8系列的说明,关于串口部分的STC官方的说明如下:

STC8A8K64S4A12-D版/STC8F8K64S4A12-D版芯片使用注意事项:
. 串口接收需要2个停止位(包括串口1, 串口2, 串口3, 串口4)
. 当串口1使用工作于模式2的定时器1作为串口的波特率发生器时,
SMOD(PCON.7)位必须置1,即必须波特率加倍串口1才可正常工作

恰巧我使用的时串口1,模式2,定时器1,根据说明赶紧把波特率计算程序改为波特率加倍串口1才可正常工作,修改如下:
PCON |= 0x80; //波特率加倍
AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
SCON = 0x50;
TMOD |=0x20; //T1工作2态
TH1=t1_cnt; //0xfd 基准为9600
TL1=t1_cnt;
TR1=1;
根据编译修改的程序,下载测试,串口依然没有输出,反复检查更改的部分,没有问题。困惑,单片机程序设计以来,这么成熟的程序还有问题,根据对STC单片机的了解,还有其他猫腻,于是再查PDF,或得信息:
关于此芯片的重要说明:
所有串口(包括串口1、串口2、串口3、串口4)的发送端口均需要
软件设置为强推挽输出模式或者外接3~5K的上拉电阻

更改P3.0,P3.1的配置:
P3M1 = 0x00; //0000 0000
P3M0 = 0x03; //0000 0011
根据编译修改的程序,下载测试,串口通信正常。以此为记。2021.3.19

猜你喜欢

转载自blog.csdn.net/cjmsea/article/details/115003332
今日推荐