標(biāo)題:
51通訊問(wèn)題
[打印本頁(yè)]
作者:
navyzq
時(shí)間:
2009-4-1 12:33
標(biāo)題:
51通訊問(wèn)題
單片機(jī)使用串口通訊時(shí),怎么設(shè)定波特率啊,
TMOD = 0x20; // 定時(shí)器1工作于8位自動(dòng)重載模式, 用于產(chǎn)生波特率
TH1 = 0xFD; // 波特率9600
TL1 = 0xFD;
SCON = 0x50; // 設(shè)定串行口工作方式
PCON &= 0xef;
程序中波特率9600怎么來(lái)的?
用晶振怎么計(jì)算?
作者:
耗子
時(shí)間:
2009-4-5 10:41
TMOD = 0x20; // 定時(shí)器1工作于方式2 8位自動(dòng)重載模式 為什么用這種模式。答:這種模式特別適合用于把T1 用做串行口撥特率發(fā)生器
TH1 = 0xFD;
TL1 = 0xFD; // 波特率9600:
為什么這里設(shè)置成 0XFD 就是撥特率 9600呢?
我們先說(shuō) T1方式2的情況下。 為什么TH1 TL1 都被設(shè)置為0XFD 是因?yàn)?T1 在方式2時(shí) 當(dāng)TL1計(jì)數(shù)溢出時(shí) 自動(dòng) 把TH1的內(nèi)容重裝載到 TL1中 這也是為什么 它叫做自動(dòng)重載模式
也許剛開(kāi)始大家會(huì)想 明明是8位的定時(shí)計(jì)數(shù)器 為什么 TH1 TL1 都要定義。就是 這個(gè)原因。下面我們?cè)僬f(shuō) 為什么要用T1 并且初值為 0XFD
SCON = 0x50; // 設(shè)定串行口工作方式 :SCON 串行口控制寄存器 為 01010000 定為方式1 (為什么是方式1 。。。。這個(gè) 應(yīng)該能看懂吧 )
PCON &= 0xef; //這條語(yǔ)句 PCON 特殊功能寄存器 被給定為 0XEF=01111111 也就是最高位為0 就是SMOD 為0 那么SMOD 干什么的呢 撥特率選擇位 為1時(shí) 撥特率加倍 為0時(shí)就是普通 后面有個(gè)公式 2的SMOD次方 就要用到這個(gè) 這里 定義為 0了 那么后面公式里就直接可以不要這個(gè)了 因?yàn)?2的0次方 為1 了
好了 上面都設(shè)置好了 下面我們來(lái)看看 計(jì)算公式
當(dāng)SMOD 等于0時(shí) 我們直接寫(xiě)成 FOSC/[32X12(2*8-T1初值)] =11059260/[32X12(256-253)=11059260/1152=9600.052083333333333333
(為什么是這個(gè)公式 。。。。。書(shū)上有 網(wǎng)上有 自己翻翻。。。。。)
OK不?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1