stc89c52单片机怎么实现用两个串口控制两个模块?
答案:4 悬赏:20 手机版
解决时间 2021-03-19 23:44
- 提问者网友:战魂
- 2021-03-19 10:48
stc89c52单片机怎么实现用两个串口控制两个模块?
最佳答案
- 五星知识达人网友:不如潦草
- 2021-03-19 12:28
stc89c52单片机的确就有一个串口,当然可以在外部加一个模拟开关来扩展两个串口,但是两个串口是分时工作的,就是不能同时收发。其实,选择STC12C5A60S2,就完全解决了这个问题吗,它就有两个独立串口,价格上不比stc89c52高多少,还有STC现在推出了最新的STC15系列的单片机,都是有两个独立串口的,价格更低了,还完全可以省掉外部复位电路和时钟电路的晶振,非常方便,为什么不选择这款昵?何苦还用stc89c52,还不能解决两个串口的问题,换个思路问题就全解决了。追问主要是编程问题。。我新手,买模块配套的是52的程序我自己改了一下,你说的那个S2的编程上和我现在用的89C52RC区别大么?追答区别肯定是有的,但不是太大,上STC公司的官网下载技术资料看一下,就知道怎么用了,这毕竟是两个串口,使用起来要方便很多了,主要是可以解决了你的问题。谁都有新手的时候,谁都是从新手练起来的,如果能够自己学习一些新的知道,得到煅炼才能进步吗,遇到问题要肯学习,不能总是因为新手就不学习新的知道了。
全部回答
- 1楼网友:春色三分
- 2021-03-19 15:57
89c52只有一个串口,11f系列有双串口详细可以去stc官网找资料追问恩我弄错了。。可是单片机已经到手了,现在的问题是我不知道怎么把两个串口的模块连接起来。。分开调试都没什么问题,程序是用别人改的,要是串口问题改动太大我改不了啊。。追答用io模拟串口协议
- 2楼网友:往事埋风中
- 2021-03-19 14:25
串口真的只有一个,就是说能用SBUF的只有一个。但是你可以用普通IO口模拟串口时序来控制另外一个外围器件。
当然用一个SBUF也可以同时控制两个外围器件,也就是说在不人为模拟串口的情况下也可以控制两个外围串口器件。
具体的可以参考串口控制寄存器的第九位TB8/和RB8,这一位可以用于地址帧和数据帧的鉴定位。比如你要控制2个器件,可以先发送一个地址帧进行片选,选定你要控制的那一个器件,此时另一个器件就会处于等待状态(也即,它将不会响应接下来的所有数据帧,只有当新的地址帧到来,且判定成功以后,它才被重新激活接收数据帧,当然,此时另一个器件又会处于等待状态了)追问我新手。。有点懂你的意思了,不过你能不能帮我比较一下IO口模拟和片选哪个方法编程更方便一点?因为我是网上找的程序不太懂。。追答如果你的外围器件可以设定地址(或者自带地址),那么肯定是片选方便。如果没有地址,那就只能模拟了追问我是用一个GSM模块TC35接受手机信号,一个红外模块本地控制的大作业。看模块说明好像没有提到地址。。怎么看出有没有设定地址的地方或自带的地址呢?追答TC35貌似没有地址,最好硬件串口控制TC35,然后用IO模拟串口来控制红外了。追问那IO模拟串口的部分需要重新编程了是吗?
当然用一个SBUF也可以同时控制两个外围器件,也就是说在不人为模拟串口的情况下也可以控制两个外围串口器件。
具体的可以参考串口控制寄存器的第九位TB8/和RB8,这一位可以用于地址帧和数据帧的鉴定位。比如你要控制2个器件,可以先发送一个地址帧进行片选,选定你要控制的那一个器件,此时另一个器件就会处于等待状态(也即,它将不会响应接下来的所有数据帧,只有当新的地址帧到来,且判定成功以后,它才被重新激活接收数据帧,当然,此时另一个器件又会处于等待状态了)追问我新手。。有点懂你的意思了,不过你能不能帮我比较一下IO口模拟和片选哪个方法编程更方便一点?因为我是网上找的程序不太懂。。追答如果你的外围器件可以设定地址(或者自带地址),那么肯定是片选方便。如果没有地址,那就只能模拟了追问我是用一个GSM模块TC35接受手机信号,一个红外模块本地控制的大作业。看模块说明好像没有提到地址。。怎么看出有没有设定地址的地方或自带的地址呢?追答TC35貌似没有地址,最好硬件串口控制TC35,然后用IO模拟串口来控制红外了。追问那IO模拟串口的部分需要重新编程了是吗?
- 3楼网友:低血压的长颈鹿
- 2021-03-19 13:07
可以,如果大小允许的话。。。。两个串口在程序上的区别仅仅是用的寄存器不同,修改一下就可以。。。两个单独的程序有点麻烦,因为不是独占CPU,所以需要协调,两个程序的main函数要合并,如果写的不合理可能出问题。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯