日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
用插值調(diào)整法設(shè)計(jì)單片機(jī)串行口波特率
用插值調(diào)整法設(shè)計(jì)單片機(jī)串行口波特率
 更新時(shí)間:2008-8-16 21:10:06  點(diǎn)擊數(shù):18
【字體: 字體顏色

3 插值調(diào)整法設(shè)計(jì)波特率的方法

由以上看出,在采用12 MHz晶振的前提下,尚有9600b/s、19 200b/s等常用波特率,采用式(2)所得的結(jié)果誤差過大而不能實(shí)現(xiàn)。當(dāng)然,一般情況下通過換用晶振來獲取所需的波特率是無可非議的,但遇到諸如:(1)所開發(fā)的系統(tǒng)要求能隨時(shí)方便地切換波特率;(2)對單片機(jī)用戶板成品進(jìn)行更改串口波特率;(3)選用非整數(shù)的晶振會增大程序調(diào)試難度等這些應(yīng)用系統(tǒng)時(shí)。通過更換晶振來獲取所需要的波特率不是很理想。筆者在應(yīng)用開發(fā)過程中發(fā)現(xiàn),可以通過適當(dāng)?shù)木幊谭椒▉韺?shí)現(xiàn)所需的波特率。

由串行口的工作原理可知,T1的溢出信號作為串行口的16分頻計(jì)數(shù)器的計(jì)數(shù)脈沖信號,而計(jì)數(shù)器的翻轉(zhuǎn)溢出作為串行口的工作時(shí)序控制脈沖。故此,如果能在收發(fā)每一位數(shù)據(jù)的時(shí)間td內(nèi),讓T1產(chǎn)生相應(yīng)的溢出次數(shù)作為串行口的工作時(shí)序控制脈沖,便可讓串行口產(chǎn)生相應(yīng)的波特率了。

實(shí)際應(yīng)用中,我們采用了常用的12MHz晶振,按常規(guī),讓定時(shí)器T1作為波特率發(fā)生器,工作在方式2,裝入整數(shù)值X,產(chǎn)生比所需略高的T1溢出。而讓定時(shí)器T0以傳送每一位數(shù)據(jù)的時(shí)間td來產(chǎn)生中斷。在T0中斷服務(wù)程序中,關(guān)停定時(shí)器T1若干個(gè)周期(由計(jì)算確定),這樣,便可獲得與所需波特率相適應(yīng)的T1溢出。其實(shí)質(zhì)就是讓前15個(gè)T1溢出計(jì)數(shù)按原先設(shè)定值進(jìn)行,而在產(chǎn)生第16個(gè)T1溢出的計(jì)數(shù)過程中,根據(jù)需要對定時(shí)器T1關(guān)閉若干個(gè)周期,以使T1在第16個(gè)計(jì)數(shù)溢出周期變長,從而達(dá)到調(diào)整每一位數(shù)據(jù)傳送時(shí)間td的目的。

采用插值調(diào)整法自身所產(chǎn)生的誤差最大值為

ΔT=(1/2)N+nTb

ΔT由兩部分組成:(1)由于插值補(bǔ)償,而造成采樣檢測時(shí)間偏離數(shù)據(jù)位中間值所致誤差Tp,Tp=(1/2)N,N為插值數(shù),Tp為固定值,(2)每一位數(shù)據(jù)(經(jīng)調(diào)校后的)周期與標(biāo)準(zhǔn)波特率之間誤差Tb。Tb為累積值,在接收數(shù)據(jù)幀的最后一位時(shí)達(dá)到最大值:nTb,n為每幀數(shù)據(jù)的位數(shù)。

4 應(yīng)用設(shè)計(jì)實(shí)例

下面以12 MHz晶振設(shè)計(jì)9600 b/s的波特率為例,說明插值調(diào)整法設(shè)計(jì)波特率的方法。

(1)求取每位代碼的傳送時(shí)間td:

td=1/波特率=(1/9600)=104.17μs

(2)求取定時(shí)器初裝值X的最大值:

得X=252,算得t=16×(2 8-252)=96

(3)計(jì)算每位的偏差值(也即插值數(shù)):

N=td-t=104.17-96約等于8

(4)此時(shí)每位的誤差為

Tb=104.17-96-8=0.17μs

即接收時(shí)累積差最大值為

ΔT=(1/2)N+nTb=4+1.87=5.87μs

由此可得累積誤差率為ΔT/td=5.87/104.17=5.64%

折算為波特率誤差時(shí)為0.51%。

發(fā)送時(shí)波特率誤差為(11位/幀)

ΔT=0.17×11=1.87μs,ΔT/td=1.87/104.17=0.16%

由以上可以看到,誤差要比允許值小得多。

(5)T0的中斷周期收td的近似值104μs。

匯編源程序:

ORG 0000H

JMP MAIN ;主程序入口

ORG 000BH

JMP TINT ;T0中斷入口

MAIN:MOV TMOD,#22H;設(shè)置T1、T0為工作方式2

MOV TL0,#0A08 ;T0賦初值

MOV TH0,#98H

MOV IE,#10000010B ;允許T0中斷,禁止;

T1中斷

SETB PT0 ;T0設(shè)為高級中斷

MOV PCON,#80H ;設(shè)置波特率倍增位

MOV TL1,#0FCH ;為T1賦初值

MOV TH1,#0FCH

SETB TR0 ;啟動TR0

SETB TR1 ;啟動TR1

…… ;進(jìn)行其他設(shè)置及任務(wù)執(zhí)行

TINT:CLR TR1 ;關(guān)停TR1

SETB TR1 ;重新啟動T1

RETI ;中斷返回

注意,由于T0中斷響應(yīng)要3~8個(gè)機(jī)器周期。為使T0中斷發(fā)生在T1的第16次溢出計(jì)數(shù)中,故此T0的預(yù)裝值為0A8H。

結(jié)束語

插值調(diào)整法,是通過編程的方法來獲得所需的波特率的,省卻了傳統(tǒng)方法修改硬件的麻煩,使變換串行口波特率顯得很方便。但由于該方案采用中斷方式處理,因此,系統(tǒng)會產(chǎn)生較頻繁的中斷。在設(shè)計(jì)單片機(jī)系統(tǒng)時(shí),要充分考慮相關(guān)的問題。

  • 上一篇: 用單片機(jī)設(shè)計(jì)現(xiàn)場總線轉(zhuǎn)換網(wǎng)橋
  • 下一篇: 一種RS-485總線自定義通信協(xié)議及其應(yīng)用
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1