找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索

請(qǐng)問單片機(jī)如何才能同時(shí)使能兩個(gè)串口,一個(gè)串口僅用來發(fā)送,另一個(gè)僅用來接收?

查看數(shù): 3864 | 評(píng)論數(shù): 8 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2021-9-17 00:10

正文摘要:

我怕我中斷初始化寫的有問題,發(fā)上來大家?guī)兔匆幌拢x謝串口1接收藍(lán)牙從機(jī)的數(shù)據(jù),串口2發(fā)送接收到的數(shù)據(jù)出

回復(fù)

ID:123289 發(fā)表于 2021-9-19 10:21
1、理論上是不可以同時(shí)的,但由于串行通訊慢,實(shí)際上是可以做到的。
2、軟件上做成一個(gè)只收一個(gè)只發(fā),協(xié)議上雙方也服從這個(gè)約定。
3、中斷據(jù)服務(wù)程序,運(yùn)行時(shí)間不能起過一個(gè)字節(jié)的拼裝收發(fā)時(shí)間,否則“1、”的不可以同時(shí)就發(fā)生了。

實(shí)際應(yīng)用中,這個(gè)做樣是不可取的,一個(gè)串口收、發(fā)就夠了。
采用兩個(gè)串口,數(shù)據(jù)通訊量也只能提高一倍,而增加一倍的波特率也同樣能達(dá)成目的。
當(dāng)然波特率會(huì)受到限制時(shí),而不得不通過增加串口數(shù)量來提升通訊數(shù)據(jù)量,但也不會(huì)采用一收一發(fā),而是一收發(fā)、另一個(gè)也收發(fā),這樣更機(jī)動(dòng)。
ID:332444 發(fā)表于 2021-9-17 20:18
單片機(jī)資源有限巧妙分時(shí)是常用方法
ID:624769 發(fā)表于 2021-9-17 17:37
無窮小量 發(fā)表于 2021-9-17 16:21
就是我用s1來接收,初始化的時(shí)候scon的REN=1,S2CON的REN = 0接收到指定字符,SCON 的TI和RI置0,之后SCON ...

S1 的 REN 不用關(guān),一直開著接受,不影響,S1 可以高優(yōu)先級(jí),S2 不用, 因?yàn),?duì)方機(jī)不知道你這個(gè)單片機(jī)的實(shí)際情況,所以,接受要給足夠的優(yōu)先度,而 S2 發(fā)送,可以遷就 其他程序,等到不忙的時(shí)候再發(fā)送, 最后,優(yōu)先級(jí)只牽涉到 對(duì) TI RI 的響應(yīng), 所以,S2 只要你數(shù)據(jù) 放到了 SBUF2 里面,不會(huì)因?yàn)?S1 接受數(shù)據(jù)被打斷影響的。
ID:168165 發(fā)表于 2021-9-17 16:21
188610329 發(fā)表于 2021-9-17 15:47
你嘴上說一個(gè) 收 一個(gè)發(fā) 實(shí)際上兩個(gè)都只在 判斷 RI
一般一個(gè)收,一個(gè)發(fā),建議用  S1 來收  S2 來發(fā),
只 ...

就是我用s1來接收,初始化的時(shí)候scon的REN=1,S2CON的REN = 0接收到指定字符,SCON 的TI和RI置0,之后SCON 的REN =0,S 2CON 的REN=1開始發(fā)送數(shù)據(jù)ES2=1
ID:168165 發(fā)表于 2021-9-17 16:03
188610329 發(fā)表于 2021-9-17 15:47
你嘴上說一個(gè) 收 一個(gè)發(fā) 實(shí)際上兩個(gè)都只在 判斷 RI
一般一個(gè)收,一個(gè)發(fā),建議用  S1 來收  S2 來發(fā),
只 ...

用優(yōu)先級(jí)控制可以嗎請(qǐng)問
ID:624769 發(fā)表于 2021-9-17 15:47
你嘴上說一個(gè) 收 一個(gè)發(fā) 實(shí)際上兩個(gè)都只在 判斷 RI
一般一個(gè)收,一個(gè)發(fā),建議用  S1 來收  S2 來發(fā),
只是負(fù)責(zé)發(fā)送的話,S2 只要 中斷觸發(fā),不用做任何判斷,就直接把 把 TI2  RI2 都置 0 , 就是中斷進(jìn)去就是直接
S2CON &= 0xfC;  然后標(biāo)記 S2Busy = 0;
S1 要寫完整的判斷  if(RI) 怎么怎么,     if(TI) 怎么怎么, 兩個(gè)結(jié)束 都要分別加上  RI =0; TI =0;
不然程序可能炮死,反正只要開了串口中斷,就算啥也不干,也必須有  TI =0; RI =0; 不然就會(huì)出問題。
ID:130230 發(fā)表于 2021-9-17 08:59
可以查看寄存器列表,寄存器里面有接收發(fā)送控制位,如果想關(guān)閉某一功能直接對(duì)應(yīng)位置位0就可以。
ID:819198 發(fā)表于 2021-9-17 08:54
好像單片機(jī)只能一個(gè)中斷一個(gè)中斷的運(yùn)行,這種同時(shí)可能有問題的。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表