找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3779|回復(fù): 8
收起左側(cè)

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

[復(fù)制鏈接]
ID:168165 發(fā)表于 2021-9-17 00:10 | 顯示全部樓層 |閱讀模式
我怕我中斷初始化寫的有問題,發(fā)上來大家?guī)兔匆幌�,謝謝串口1接收藍(lán)牙從機(jī)的數(shù)據(jù),串口2發(fā)送接收到的數(shù)據(jù)出
4.png
3.png
2.png
1.png
回復(fù)

使用道具 舉報(bào)

ID:819198 發(fā)表于 2021-9-17 08:54 | 顯示全部樓層
好像單片機(jī)只能一個(gè)中斷一個(gè)中斷的運(yùn)行,這種同時(shí)可能有問題的。
回復(fù)

使用道具 舉報(bào)

ID:130230 發(fā)表于 2021-9-17 08:59 | 顯示全部樓層
可以查看寄存器列表,寄存器里面有接收發(fā)送控制位,如果想關(guān)閉某一功能直接對應(yīng)位置位0就可以。
回復(fù)

使用道具 舉報(bào)

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; 不然就會出問題。
回復(fù)

使用道具 舉報(bào)

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)先級控制可以嗎請問
回復(fù)

使用道具 舉報(bào)

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
回復(fù)

使用道具 舉報(bào)

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)先級,S2 不用, 因?yàn)�,對方機(jī)不知道你這個(gè)單片機(jī)的實(shí)際情況,所以,接受要給足夠的優(yōu)先度,而 S2 發(fā)送,可以遷就 其他程序,等到不忙的時(shí)候再發(fā)送, 最后,優(yōu)先級只牽涉到 對 TI RI 的響應(yīng), 所以,S2 只要你數(shù)據(jù) 放到了 SBUF2 里面,不會因?yàn)?S1 接受數(shù)據(jù)被打斷影響的。
回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2021-9-17 20:18 | 顯示全部樓層
單片機(jī)資源有限巧妙分時(shí)是常用方法
回復(fù)

使用道具 舉報(bào)

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)然波特率會受到限制時(shí),而不得不通過增加串口數(shù)量來提升通訊數(shù)據(jù)量,但也不會采用一收一發(fā),而是一收發(fā)、另一個(gè)也收發(fā),這樣更機(jī)動。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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