[問題] 8051一般IO腳模擬RS232

看板Electronics作者 (麵T)時間11年前 (2013/02/06 17:16), 編輯推噓3(3020)
留言23則, 4人參與, 最新討論串1/1
程式碼 http://ideone.com/J4Zy7D 震盪器使用 12MHz 由電腦傳16位元的資料至8051 此程式是採取收一個位元,馬上發一個位元的方式回傳給電腦 但當鮑率超過4800後,電腦就會收到錯誤的資料。 用一般IO腳模擬出來的RS232通訊是不是真的無法達到這麼高的鮑率? -- 我是麵T,哩賀 http://ppt.cc/-eS5 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.95.116

02/06 17:41, , 1F
要用計時中斷
02/06 17:41, 1F

02/06 17:44, , 2F
void Timer0_isr( void )interrupt 1 這個嗎?
02/06 17:44, 2F

02/17 00:10, , 3F
原本是採取收一個位元馬上發一個位元嗎? (bit收bit發)
02/17 00:10, 3F

02/17 00:11, , 4F
如果是這樣的話是不符合rs232的通訊格式的
02/17 00:11, 4F

02/17 00:12, , 5F
rs232資料的傳送單位都是以字元(byte)為傳送單位的
02/17 00:12, 5F

02/17 00:12, , 6F
也就是說...雖然你在MCU上是收到一個bit後馬上丟出去
02/17 00:12, 6F

02/17 00:13, , 7F
但在電腦端還是會等1byte的資料量滿才結束一次接收
02/17 00:13, 7F

02/17 00:15, , 8F
如果要用IO腳嘗試做RS232模擬的話
02/17 00:15, 8F

02/17 00:17, , 9F
假設傳輸時, 用了 起始位元1, 傳送字元為8位元,
02/17 00:17, 9F

02/17 00:17, , 10F
1個停止位元, 不使用同位撿查
02/17 00:17, 10F

02/17 00:18, , 11F
這樣最基本的通訊協定設定下
02/17 00:18, 11F

02/17 00:19, , 12F
每次所傳輸的資料位元格式為
02/17 00:19, 12F

02/17 00:19, , 13F
1(起始) + 8(資料) + 0(同位) + 1(停止)
02/17 00:19, 13F

02/17 00:20, , 14F
共10個 bit 連續傳輸, 來完成一個byte資料的傳送
02/17 00:20, 14F

02/17 00:29, , 15F
另外,在接收的過程中MCU的中斷還要處理將收到資料移位
02/17 00:29, 15F

02/17 00:30, , 16F
如果MCU本身有UART功能的話且使用專用腳位來接收的話
02/17 00:30, 16F

02/17 00:31, , 17F
這個工作是背景的硬體動作,所以如果用一般IO模擬的話
02/17 00:31, 17F

02/17 00:31, , 18F
也將這個動作加進去,因此相對的用IO模擬的速度可能
02/17 00:31, 18F

02/17 00:32, , 19F
不會那麼理想
02/17 00:32, 19F

02/17 00:41, , 20F
那在考慮到說因為rs232本身沒有同步時脈
02/17 00:41, 20F

02/17 00:42, , 21F
所以又要用IO模擬出鮑率的流量速度可能又更有難度了
02/17 00:42, 21F

08/13 19:36, , 22F
但在電腦端還是會等1b https://muxiv.com
08/13 19:36, 22F

09/17 23:29, , 23F
也將這個動作加進去,因 https://daxiv.com
09/17 23:29, 23F
文章代碼(AID): #1H4X-7Xa (Electronics)