<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 51系列單片機12M晶振與9600波特率漫談

51系列單片機12M晶振與9600波特率漫談

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏
最近寫(xiě)了個(gè)小程序,用到9600波特率,板子上是12M晶振。但在調試的時(shí)候,死活都配不出9600的波特率。于是上狗狗,狗了一下,發(fā)現不少朋友們都遇到了相同的問(wèn)題,而且下了板上釘釘的結論:51單片機在12M晶振的時(shí)候是無(wú)法實(shí)現9600波特率的。

本文引用地址:http://dyxdggzs.com/article/201611/321604.htm

網(wǎng)友們大都推薦改成11.0592M晶振。當然這個(gè)方案是絕對可行的,但我實(shí)在懶得去買(mǎi)這號晶振(跑一趟電子市場(chǎng)要花3小時(shí)呢)。于是重新去研究芯片手冊,終于功夫不負有心人,我發(fā)現,如果你一不小心選的是52或者54、58的芯片,這個(gè)問(wèn)題是可以解決的哦。





51單片機通常由TIMER1來(lái)產(chǎn)生波特率,TIMER1的頻率是晶振的1/12,也就是1M。它的頻率太低導致它不能實(shí)現9600波特率。這也給我們提供了一條新的解決途徑:如果我們能提高時(shí)鐘頻率,那么也可能實(shí)現9600的波特率。





提高時(shí)鐘頻率是不是一定要提高晶振頻率呢?當然,答案是否定的(改晶振頻率那就太土了)。52及以上的單片機提供了TIMER2,可作為波特率發(fā)器。且它作為波特率發(fā)生器時(shí),它的頻率是晶振的1/2,也就是6M。其結構如圖1。



coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">


















o:title=""/>



圖1 TIMER2 的波特率發(fā)生器







TIMER2作為波特率發(fā)生器,要注意以下幾點(diǎn):



1.
C/T位清零,選擇OSC/2作為時(shí)鐘;



2.
TH2和TL2串聯(lián)成16位時(shí)鐘,溢出后自動(dòng)重裝;重裝常數存放在RCAP2H和RCAP2L;



3.
置RCLK和TCLK為1,將特率生成器切換到TIMER2;



4.
置TR2,啟動(dòng)TIMER2。





代碼如下:



void Uart0_Init()



{



//9600波特率對應 FFD9H



RCAP2L = 0xD9;



RCAP2H
= 0xFF;





//RCLK、TCLK置1



//TR2置1



T2CON
= 0x34;





//串口工作模式1,接收使能



SCON
= 0x50;





//允許串口中斷



ES
= 1;





return;



}





void Uart0_Ist() interrupt 4



{



if(RI)



{



RI
= 0;



//Do
whatever you want;



}



if(TI)



{



TI
= 0;



//Do
whatever you want;



}



}

以上設置,用串口調試助手調試通過(guò)。



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>