[問題] PC送UART給51兩個字,出錯機率大

看板ASM (組合語言)作者 (800IM)時間12年前 (2012/08/11 16:01), 編輯推噓5(5015)
留言20則, 4人參與, 最新討論串1/2 (看更多)
我要用PC傳 0x00~0xFF 給51,並顯示在一個 port 的 LED 但是 bit 0 和 bit 3 經常會消失變 0,找不到原因 code http://pastie.org/4454435 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.167.217

08/11 20:22, , 1F
你pc用什麼傳?
08/11 20:22, 1F

08/11 20:32, , 2F
VB6 MSC.Output = Txt_Tx.Text
08/11 20:32, 2F

08/11 20:33, , 3F
難道是PC端出了問題嗎?? 因為我照Wolflord說的做也沒改善
08/11 20:33, 3F

08/11 21:20, , 4F
vb6 請用binary方式.需要用陣列方式傳輸.不好搞
08/11 21:20, 4F

08/11 21:21, , 5F
建議你用 專用於測試終端機程式 可以直接傳 binary
08/11 21:21, 5F

08/11 23:35, , 6F
應該是race condition. 試看看多宣告一組 b[2], 在 for
08/11 23:35, 6F

08/11 23:36, , 7F
迴圈中增加 b[i]=rxQ[i]; 後面的rxQ[rix]都改為b[i]
08/11 23:36, 7F

08/11 23:37, , 8F
最後也改為 P1=~(b[0]<<4|b[1]);
08/11 23:37, 8F
謝啦! 的確可以! 是因為不可預期時間中斷造成的 race 嗎? ※ 編輯: deo2000 來自: 140.122.167.217 (08/12 00:22)

08/12 21:52, , 9F
嗯~ 發生中斷後讓主程式讀到不一致(inconsistent)的資料
08/12 21:52, 9F

08/12 22:13, , 10F
其實,9600 uart的速度大多數應用根本沒有作isr的需求
08/12 22:13, 10F

08/12 22:15, , 11F
isr的運用觀念你可以看作是一個cpu切成兩個或三個,卻共
08/12 22:15, 11F

08/12 22:16, , 12F
用一套硬體資源與一起競爭cpu的運算能力(時間)
08/12 22:16, 12F

08/12 22:17, , 13F
所以,在運用尚要考慮的問題會成次方的長出來。
08/12 22:17, 13F

08/12 22:19, , 14F
結果反而導致可靠度的下降,因此進行微系統設計時,最好
08/12 22:19, 14F

08/12 22:20, , 15F
先進行資源與處理機時間分割以及行程規劃,不要像在PC寫
08/12 22:20, 15F

08/12 22:20, , 16F
程式一般的隨性想到就加進去。因為PC了資源豐富外還有
08/12 22:20, 16F

08/12 22:21, , 17F
高階作業系統在寵愛你,不管你幹了什麼不自覺得蠢事,只
08/12 22:21, 17F

08/12 22:22, , 18F
要PC資源還吃得下去,作業系統都會盡量包容你。但是直接
08/12 22:22, 18F

08/12 22:23, , 19F
操控微處理機的狀況下,你邏輯錯誤或發生成事干涉,微處
08/12 22:23, 19F

08/12 22:25, , 20F
理機都只會呆呆往前衝:就像Asimov筆下早期機器一樣憨直
08/12 22:25, 20F
文章代碼(AID): #1G9X5icv (ASM)
文章代碼(AID): #1G9X5icv (ASM)