請幫我改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如有不適當的文章於本部落格,請留言給我,將移除本文。謝謝!
留言列表