1楼:匿名用户
一个用t1产生波特率,一个用自带的brt发生器产生波特率;一个中断的时候立即关总中断,避免另外一个造成中断重入,中断完成后开总中断;这样就能完全避开冲突。比如stc12c5a60s2或者nxp的p89lpc952都是双串口的,我都用过。
2楼:匿名用户
两个用相同的波特率,都用brt可以,没问题的,我用115200都没事,没出现过有冲突发生,只是注意在两个串行中断中别写太长语句,尤其是发送语句绝别写在串口接收中断中。
stc12c5160s2单片机的双串口通讯怎样能让两个串口不互相冲突?求一份程序,我借鉴一下 5
3楼:匿名用户
设定一个时间变量,放在定时中断中。
例:在主程序中,当时间大于1秒时,串口一收发,大于2秒时,串口2收发。
注意波特率,1秒左右完成的话,25个字节收发 2400boadrate 是没有问题的。
4楼:匿名用户
用两个功能函数不停的切换就可以避免冲突了
求助:stc系列双串口单片机 同时使用两个串
5楼:顶起石头的小草
然后呢,你要问什么?实现什么功能?
6楼:匿名用户
你要问啥?双串口同时使用是没有问题的。
只有单串口的单片机如何实现与两个串口模块通信
7楼:做而论道
只有单串口的单片机如何实现与两个串口模块通信--可以分时工作。
--分别和两个串口外设,通信。
--但是,外部电路,需要好好设计。
8楼:匿名用户
最简单的办法就是再模拟一个串口,不改变你原来的设计思路,增加一点**而已。
9楼:匿名用户
加一个引脚,通过使能信号分别控制?我是菜鸟,别见笑哈~
stc89c52单片机怎么实现用两个串口控制两个模块?
10楼:匿名用户
stc89c52单片机的确就有一个串口,当然可以在外部加一个模拟开关来扩展两个串口,但是两个串口是分时工作的,就是不能同时收发。其实,选择stc12c5a60s2,就完全解决了这个问题吗,它就有两个独立串口,**上不比stc89c52高多少,还有stc现在推出了最新的stc15系列的单片机,都是有两个独立串口的,**更低了,还完全可以省掉外部复位电路和时钟电路的晶振,非常方便,为什么不选择这款昵?何苦还用stc89c52,还不能解决两个串口的问题,换个思路问题就全解决了。
11楼:匿名用户
89c52只有一个串口,11f系列有双串口详细可以去stc官网找资料
12楼:
可以,如果大小允许的话。。。。两个串口在程序上的区别仅仅是用的寄存器不同,修改一下就可以。。。两个单独的程序有点麻烦,因为不是独占cpu,所以需要协调,两个程序的main函数要合并,如果写的不合理可能出问题。。。
13楼:小号很好使
串口真的只有一个,就是说能用sbuf的只有一个。但是你可以用普通io口模拟串口时序来控制另外一个外围器件。
当然用一个sbuf也可以同时控制两个外围器件,也就是说在不人为模拟串口的情况下也可以控制两个外围串口器件。
具体的可以参考串口控制寄存器的第九位tb8/和rb8,这一位可以用于地址帧和数据帧的鉴定位。比如你要控制2个器件,可以先发送一个地址帧进行片选,选定你要控制的那一个器件,此时另一个器件就会处于等待状态(也即,它将不会响应接下来的所有数据帧,只有当新的地址帧到来,且判定成功以后,它才被重新激活接收数据帧,当然,此时另一个器件又会处于等待状态了)
我用的是stc12 有两个串口的单片机,不知道串口2是怎么设置的,请高手帮忙.
14楼:匿名用户
char uart2init(char s2**od,char brtx12,unsigned char reload)
else if(s2**od == 0)
else
if(brtx12 == 1)
else if(brtx12 == 0)
else
auxr |= brtr;//开启波特率发生器ie2 |= es2;// es2 = 1; //允许串口2中断
ea = 1; //开总中断
return 0;}
15楼:万能哥哥
设置 寄存器 不就ok ?
求助:51单片机如何实现两个串口分时复用的
16楼:匿名用户
是一个单片机,要接成两个串口吗?
那只好用一个模拟开关,来切换两个串口。但实际上是一个串口,需要单片机分时来使用两个串口。这需要有严格的通信协议,编写程序要按这个协议,否则,两个串口在时间上会出现冲突,或不能正常通信,或丢失数据。
stc单片机,就有这种类型的,外部引脚是两个串口,即两组rxd,txd引脚。内部还是一个uart,但两个串口的切换是在内部完成的,外部用起来就方便多了。
stc单片机还有内部有两个独立串口的,这样,用起来就省事多了,两个独立串口,互相不影响。
串口通信的问题,两个单片机之间进行串口通信,它们的时钟频率不同,在进行数据传输是怎么实现的
17楼:匿名用户
串行通讯要求的是波特率一致,两个单片机的时钟不一样,那么特特率发生器的参数就不一样,以保证波特率一样。