亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        軟件延時程序的分析與精確延時程序設(shè)計

        2014-12-16 08:30:16刁一峰楊培剛劉麗萍劉興旺
        關(guān)鍵詞:指令單片機(jī)程序

        刁一峰,楊培剛,劉麗萍,劉興旺

        (湖南生物機(jī)電職業(yè)技術(shù)學(xué)院車輛工程學(xué)院,湖南長沙410126)

        1 概述

        單片機(jī)軟件延時程序是一種循環(huán)程序,即中央處理器通過執(zhí)行占用固定時間的循環(huán)體來完成延時。在進(jìn)行單片機(jī)應(yīng)用系統(tǒng)設(shè)計的過程中,有時會發(fā)現(xiàn)實際結(jié)果和預(yù)期目標(biāo)不符。以跳馬燈設(shè)計為例進(jìn)行說明,具體Proteus仿真系統(tǒng)如圖1所示。

        要求P1口連接8個LED燈,從D1開始,依次點(diǎn)亮。但是把表1所示的跳馬燈程序下載到AT89S51單片機(jī)上后,發(fā)現(xiàn)8個LED燈一直亮,和預(yù)期要求不符。

        圖1 跳馬燈仿真系統(tǒng)

        通過分析,發(fā)現(xiàn)沒有延時程序?qū)γ恳粋€燈亮的狀態(tài)進(jìn)行延時[1]。因此,延時程序?qū)τ谙到y(tǒng)程序來說是至關(guān)重要的。

        2 分析軟件延時程序

        軟件延時程序就是單片機(jī)程序的每條指令被CPU執(zhí)行時都要占用一定的機(jī)器周期,并且通過多次循環(huán)來實現(xiàn)延時的目的。因此,只要知道了執(zhí)行每條指令所占用的機(jī)器周期以及循環(huán)控制變量,就能算出延時的時間長度。

        2.1 三個概念

        振蕩周期(TC):也叫時鐘周期,一個振蕩周期等于晶振頻率的倒數(shù),即

        TC=1/fosc

        表1 跳馬燈程序與功能

        機(jī)器周期(T):1個機(jī)器周期等于12個時鐘周期,即

        T=12TC

        指令周期:指CPU執(zhí)行一條指令所需要的時間,指令周期以機(jī)器周期為單位,分為單周期指令、雙周期指令和四周期指令3種,如表2所示。

        表2 指令周期與機(jī)器周期的關(guān)系

        2.2 常用指令

        單片機(jī)AT89S51匯編延時程序中經(jīng)常用到的指令有以下幾種:

        1)數(shù)據(jù)傳送指令MOV Rn,#X

        把立即數(shù)X傳送到通用寄存器Rn中去,雙周期指令。

        2)循環(huán)轉(zhuǎn)移指令DJNZ Rn,L1

        將通用寄存器Rn中的內(nèi)容減1后判斷是否為0,如果為0順序執(zhí)行,不為0轉(zhuǎn)移到L1處,雙周期指令。

        3)返回指令RET

        返回主程序,雙周期指令。

        4)空操作指令NOP

        不進(jìn)行任何操作,單周期指令。

        2.3 幾種延時程序方式時間長度計算

        1)單層循環(huán)延時程序

        DEL:MOV R0,#X;1周期

        L1:DJNZ R0,L1;2周期

        RET;2周期

        程序延時時間t=T+2XT+2T=(2X+3)T。

        因為0≤X≤255(其中X=1時,延時時間最短),所以整個程序的延時時間范圍為5T≤t≤515T,具體延時時間與X的關(guān)系如表3所示。

        2)雙層循環(huán)延時程序

        DEL:MOV R1,#Y;1周期

        L2:MOV R0,#X;1 周期

        L1:DJNZ R0,L1;2周期

        DJNZ R1,L2;2周期

        RET;2周期

        延時時間t=T+YT+2XYT+2YT+2T=[(2X+3)Y+3]T,整個程序的延時時間范圍為8T≤t≤131843T,具體延時時間與X的關(guān)系如表3所示。

        3)三層循環(huán)延時程序

        DEL:MOV R2,#Z;1 周期

        L3:MOV R1,#Y;1 周期

        L2:MOV R0,#X;1 周期

        L1:DJNZ R0,L1;2周期

        DJNZ R1,L2;2周期

        DJNZ R2,L3;2周期

        RET;2周期

        延時時間t=T+ZT+YZT+2XYZT+2YZT+2ZT+2T={[(2X+3)Y+3]Z+3)}T,整個程序的的延時時間范圍為11T≤t≤33751811T,具體延時時間與X的關(guān)系如表3所示。

        通過上面分析可以總結(jié)出N層循環(huán)程序的延時時間長度的計算公式為

        其中,Xi是裝入通用寄存器Ri的立即數(shù),T是機(jī)器周期。

        3 精確延時程序設(shè)計

        要設(shè)計精確的延時程序只有 MOV、DJNZ、RET這些功能指令是不行的,還要在循環(huán)程序段中增加啞指令(如NOP等)對延時時間進(jìn)行調(diào)整,豐富延時程序的選擇項,實現(xiàn)延時程序的精確設(shè)計。

        3.1 延時時間的調(diào)整

        DEL:MOV R2,#Z;1周期 1

        NOP;1周期1

        L3:MOV R1,#Y;1周期 Z

        NOP;1周期 Z

        L2:MOV R0,#X;1周期 YZ

        NOP;1周期 YZ

        L1:DJNZ R0,L1;2周期 2XYZ

        DJNZ R1,L2;2周期 2YZ

        DJNZ R2,L3;2周期 2Z

        RET;2周期2

        在數(shù)據(jù)傳送MOV指令后增加空操作指令NOP,則延時時間變?yōu)?/p>

        表3 不同層數(shù)延時時間簡表

        t=T+T+ZT+ZT+YZT+YZT+2XYZT+2YZT+2ZT+2T=(2XYZ+4YZ+4Z+4)T。

        延時時間長度的計算公式變?yōu)?/p>

        3.2 實例設(shè)計

        以晶振頻率focs為12 MHz的單片機(jī)為例,設(shè)計1個100 ms延時時間的延時程序。已知機(jī)器周期T=1 μs,100 ms=100 000 μs,根據(jù)延時時間計算公式可選擇雙層或多層循環(huán)。假如選擇雙層延時,Y取值200,X 取值249,延時時間為 100.203 ms,和預(yù)設(shè)值相差較大。若進(jìn)行調(diào)整,Y取值200,X取值248,在指令MOV R1,#X后加NOP指令,延時時間變?yōu)?00.003 ms,也不夠精確。

        若選擇六層延時,加調(diào)整可得延時程序如下:

        DEL:MOV R5,#5

        NOP

        NOP

        L6:MOV R4,#5

        NOP

        L5:MOV R3,#5

        NOP

        L4:MOV R2,#5

        NOP

        L3:MOV R1,#4

        L2:MOV R0,#198

        L1:DJNZ R0,L1

        DJNZ R1,L2

        DJNZ R2,L3

        DJNZ R3,L4

        DJNZ R4,L5

        DJNZ R5,L6

        RET;

        延時時間為t=(((((2*198+3)*4+3)*5+4)*5+4)*5+4)*5+5=100 000 μs=100 ms。

        4 軟件延時程序的缺陷

        通過100 ms精確延時程序設(shè)計發(fā)現(xiàn),延時程序占用了大量的通用寄存器資源,然而真正進(jìn)行精確延時程序設(shè)計時,還應(yīng)該考慮實際的晶振頻率、主程序運(yùn)行指令和調(diào)用指令A(yù)CALL、LCALL等諸多因素,實現(xiàn)起來相當(dāng)困難。另外,軟件延時程序是通過犧牲CPU的時間來實現(xiàn)時間延時,中斷服務(wù)程序的執(zhí)行不能出現(xiàn)在延時程序的執(zhí)行過程中,以免延時時間受到影響,引起主程序整體功能的錯亂,使主程序的正常運(yùn)行受到影響。所以,單片機(jī)在進(jìn)行實時性、多任務(wù)的工作時,要安排好延時程序的時序,否則會影響任務(wù)調(diào)度,造成程序不能正常運(yùn)行。

        實際上延時參數(shù)數(shù)值的設(shè)定只能根據(jù)具體的時間長度和晶振頻率的參數(shù)計算,依據(jù)模塊化延時程序所總結(jié)出的方法和技巧是十分不便的。

        5 結(jié)語

        因為設(shè)計者都有不同的設(shè)計習(xí)慣,面對不同的實際影響因素,公式會有所差異,然而分析和解決問題的方法和技巧是相似的。通過對單片機(jī)不同的延時程序模式的分析,總結(jié)出了延時時間的計算公式和辦法,設(shè)計了精確的延時程序,在教學(xué)和程序開發(fā)上具有良好的應(yīng)用效果。

        [1]張迎新.單片機(jī)原理及應(yīng)用[M].第2版.北京:電子工業(yè)出版社,2009:86-87.

        [2]吳挺運(yùn),林成何.Keil C51精確延時程序設(shè)計[J].電子科技,2012(12):103-106.

        [3]張德芳,雷國亮,張曉冰.LPC21xx C程序的精確延時方法[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010(10):73-75.

        [4]趙月靜,張永弟,翟衛(wèi)賀.Proteus和Keil C在開發(fā)單片機(jī)控制系統(tǒng)中的應(yīng)用[J].實驗科學(xué)與技術(shù),2013(2):31-34.

        [5]郭兆正,尹作友.單片機(jī)系統(tǒng)模塊化設(shè)計方法教學(xué)研究[J].沈陽師范大學(xué)學(xué)報(自然科學(xué)版),2013(1):112-114.

        [6]向繼文.以應(yīng)用為目標(biāo)的單片機(jī)原理教學(xué)[J].計算機(jī)教育,2013(22):49-54.

        猜你喜歡
        指令單片機(jī)程序
        聽我指令:大催眠術(shù)
        基于單片機(jī)的SPWM控制逆變器的設(shè)計與實現(xiàn)
        電子制作(2019年13期)2020-01-14 03:15:28
        基于單片機(jī)的層次漸變暖燈的研究
        電子制作(2019年15期)2019-08-27 01:12:10
        基于單片機(jī)的便捷式LCF測量儀
        電子制作(2019年9期)2019-05-30 09:42:02
        試論我國未決羈押程序的立法完善
        ARINC661顯控指令快速驗證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        无码人妻AⅤ一区 二区 三区| 99久久精品国产一区二区| 日本午夜精品理论片a级app发布| 欧美日韩另类视频| 好男人日本社区www| 天天躁日日操狠狠操欧美老妇 | 久久aaaa片一区二区| 亚洲一本到无码av中文字幕| 无码人妻精品一区二区三区66| 啊v在线视频| 国产亚洲激情av一区二区| 狼人精品剧情av在线观看| 激情亚洲一区国产精品久久| 国产午夜精品一区二区三区| 丝袜国产高跟亚洲精品91| 中文无码免费在线| 日本一区二三区在线中文| 粗大猛烈进出高潮视频大全| 在线精品一区二区三区| 白白色发布在线播放国产| 亚洲美女一区二区三区三州| 日本中文字幕有码网站| 最近在线更新8中文字幕免费| 激情五月天伊人久久| 日本人妻三级在线观看| 国语自产精品视频在线看| 色翁荡息又大又硬又粗又视频图片| 国产成人综合日韩精品无| 精品亚洲一区中文字幕精品| 婷婷色香五月综合激激情| 蜜臀aⅴ国产精品久久久国产老师| 国产精品久久1024| 国产精品女同二区五区九区 | 一道本加勒比在线观看| 99久久99久久久精品齐齐| 国产女主播喷水视频在线观看 | 日韩免费高清视频网站| 男女性行为免费视频网站| 亚洲人成色7777在线观看不卡| 综合三区后入内射国产馆| 岛国熟女一区二区三区|