HC89S105串口的坑
本帖最后由 芯圣电子官方QQ 于 2023-7-25 11:15 编辑移植一个STM8S003的程序到HC89S105上。因为之前有用过HC89S03,就想当然地认为都是同样是51系列的芯片,寄存器操作应该也是一样的。唉大意了。
HC89S003的外观功能引脚映射寄存器是这样的
就是说,我如果要设置TXD映射到P3.1应该是TXD_MAP=0X31;这非常简单易懂。
然后HC89S105是这样的
HC89S105如果要将TXD映射到P3.1就是TXD_MAP=0x19;奇怪吧。
然后芯圣官网下载的例程却是这样的
TXD_MAP = 0x01; //TXD映射P01
RXD_MAP = 0x00; //RXD映射P00
一开始,我按照HC89S003的经验设置TXD_MAP,RXD_MAP.始终没串口输出,检查程序,对照例程也没有问题。搞来搞去都是没有输出。无意中查了一下规格书关于TXD_MAP和RXD_MAP的描述,简直是大吃一斤。怎么同一系列的芯片都没有传承的。真坑。
将TXD_MAP和RXD_MAP设置正确后,一切正常。
多谢提醒,原来HC89S105的端口映射寄存器不是默认的高4位定端口,低4位定Bit口的,而好像HC89F0541的高4位是定端口,如P1、P2等,低4位定Bit口的,如 n.7、n.6
panxiaoyi 发表于 2021-3-29 23:29
多谢提醒,原来HC89S105的端口映射寄存器不是默认的高4位定端口,低4位定Bit口的,而好像HC89F0541的高4位 ...
嗯嗯,关键是HC89S105的官网例程拿P01和P00举例,也让我误以为HC89S105会像HC89S003一样,是高4位定端口,低4位是定bit位的。细细想想官网例程的赋值也是没错的,只是拿P00和P01举例不够典型,没有体现出HC89S105的区别。 我在使用别的芯片的时候,也遇到过类似的问题,不知道怎么解决。 感谢楼主的分享,我暂时还没有遇到过。
这个有什么区别呢 STM8S003兼容吗 谢谢楼主提醒的。 51系列的芯片不错 HC89S03怎么样 了解一下。 映射不一样了吗 STM8S003这个使用过 程序移植的时候需要注意什么呢 STM8S003跟这个有区别吗 需要修改哪里呢 速度可以到多少呢 这个跟什么芯片兼容呢 以后学习一下吧。