close
10416

請幫我改8051串列埠的鮑率

請幫我把鮑率從1200BPS改成14400BPS 或是相近的數字也可以baud: MOV TMOD

#00100000B MOV TH1

#230 MOV TL1

#230 SETB TR1 MOV SCON

#01110000B
我算了一下

你的石英振盪器是使用12MHzTH1 和 TL1 的部份

若是值等於253

則鮑率是10416.66667BPS; 254

則鮑率是15625BPS如果使用11.059MHz的石英振盪器TH1 和 TL1 的部份所設定的值會比較接近你想要的TH1

TL1 都設254

則產生的鮑率是14399.73958BPSPCON暫存器的第7bitSMOD 雙倍鮑率位元

當串列埠工作於模式1、2或3時

如使用Timer1作鮑率產生器

且SMOD=1

則鮑率為雙倍。

有關PCON的部份

我舉幾個例子

給你參考看看如果要使用到串列埠傳輸(UART)

我個人建議使用11.059的石英振盪器

鮑率選擇範圍如下(低於1200的我就沒列出來了):1200、1800、2400、4800、7200、9600、14400、19200、57600BPs而使用12MHz的石英振盪器

則可使用的鮑率如下:1200、2400、4800BPs

其他的鮑率誤差偏高一般使用時(11.059MHz)

如果在14400BPs(包含14400)以內

PCON的SMOD設置為0

TH1和TL1=0~255的設定就可以達成了。

這不代表說14400BPs以下的只能在SMOD=0的模式下例如:SMOD=0

TH1、TL1=244

產生的鮑率為2400BPs SMOD=1

TH1、TL1=232

產生的鮑率也是2400BPs但是如果想設19200、57600BPs

就只能乖乖的使用在SMOD=1的模式下。

SMOD=1

TH1、TL1=253

則鮑率為19200BPsSMOD=1

TH1、TL1=255

則鮑率為57600BPs12MHz振盪器高於4800BPs會跑不動

因誤差太大

改換11.059MHz試試 參考資料 算鮑率的公式
__________1*系統時脈BR(鮑率)= -------------------__________ 32*12[256-(TH1)]__________ 1*系統時脈TH1 = 256- ---------------__________ 384*(鮑率)
修改鮑率

需要先知道你要的模式

有沒有預計使用哪個Timer

而且也需要使用的OSC頻率. 給你公式比較實在

自己算吧. MODE2:  2^(SMOD)/64*(震盪器頻率) ps.SMOD(PCON中) MODE1:  TH1=256-[2^(SMOD)*(震盪器頻率)/(384*鮑率)]

串列埠並列埠,串列埠插座,串列埠com,8051串列埠,串列埠通訊,rs232串列埠,串列埠中斷,串列埠傳輸,串列埠 英文,何謂串列埠串列埠,鮑率,石英振盪器,MHz,SMOD,TMOD,BPS,PCON,SETB,TR1

條件|宣告|字串|C|PHP|函數|ASP.net|程式|設計|連結|分析|ASP|C |HTML|RFID|型別|VB.net|VB|原始碼|陣列|TABLE|參數|DOS|遊戲|Push|命令|組合語言|8051|TELNET|XML|

10416
參考:http://tw.knowledge.yahoo.com/question/question?qid=1405112411440如有不適當的文章於本部落格,請留言給我,將移除本文。謝謝!
arrow
arrow
    創作者介紹
    創作者 10401 的頭像
    10401

    10401

    10401 發表在 痞客邦 留言(0) 人氣()