[問題] 有關pc經RS232傳字元給8051

看板ASM (組合語言)作者 (曬太陽的肥貓)時間12年前 (2012/08/10 16:05), 編輯推噓6(608)
留言14則, 4人參與, 最新討論串1/1
以下為我8051上的程式 #include <AT89X51.H> void UART (int BPS) { SCON=0X50; TMOD=0X20; TH1=256-(28800/BPS); TR1=1; } void main(void) { UART(9600); RI=0; P2=~SBUF; } 電腦上 傳輸速率9600 數據位元8 停止位1 校驗位NONE 我用PC傳字元'a', 我認為應該使P2的LED燈亮"0110 0001"也就是ASCII的"0x61" 可是P2顯示"0100 1111"也就是"0x4f" 我完全不了解為什麼會這樣 拜託板上大大幫忙 ORZ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.13.136.176

08/10 16:50, , 1F
我的P2是亮 0,5,6
08/10 16:50, 1F

08/10 16:58, , 2F
雖然下一篇有人修正,但是我照你的code去跑就有亮"01100001
08/10 16:58, 2F

08/10 16:59, , 3F
而且不解的是,實際執行就像寫了無限迴圈一樣,不斷更新訊號
08/10 16:59, 3F

08/10 17:00, , 4F
可是你的code應該會一次就瞬間跑完了才對
08/10 17:00, 4F

08/10 17:37, , 5F
修正的應該還是迴圈阿,while(1)是作DO內的程式碼吧
08/10 17:37, 5F

08/10 17:39, , 6F
看錯,D大說的應該是原PO的程式碼吧
08/10 17:39, 6F

08/10 17:40, , 7F
我用KEIL C好像都是這樣耶,除非最後加個while(1)來停止
08/10 17:40, 7F

08/10 17:48, , 8F
請問deo大大你電腦端設定,與單晶片的石英頻率
08/10 17:48, 8F

08/10 18:26, , 9F
你程式自己沒迴圈,8051就是跑一圈reset一次,一直reset
08/10 18:26, 9F

08/10 18:27, , 10F
你的接收本來就跟擲甩子一樣
08/10 18:27, 10F

08/10 18:32, , 11F
所以wolf大大也得到正確答案嗎?
08/10 18:32, 11F

08/10 18:39, , 12F
....真不知道怎麼回答你,我Modbus host都在寫了 XD
08/10 18:39, 12F

08/10 18:41, , 13F
btw你程式沒控制好流程的話, 答案會隨不同廠牌的IC不同
08/10 18:41, 13F

08/10 21:23, , 14F
PC:最典型 9600,n,8,1 MCS-51:11.059M
08/10 21:23, 14F
文章代碼(AID): #1G9C2kDP (ASM)
文章代碼(AID): #1G9C2kDP (ASM)