1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

    <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
    <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
  2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
    現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>單時鐘完成多點分別計時的實現(xiàn)和應(yīng)用

    單時鐘完成多點分別計時的實現(xiàn)和應(yīng)用

    時間:2023-02-20 23:16:00 電子通信論文 我要投稿
    • 相關(guān)推薦

    單時鐘完成多點分別計時的實現(xiàn)和應(yīng)用

     摘要:本文通過介紹只有雙時鐘的單片機系統(tǒng),在多個事件需要分別定時或延時的時候,解決一個時鐘完成多個計時延時的有效方法,通過這種方法可以達到對多個被控事件統(tǒng)一自動控制目的。

        關(guān)鍵詞:單片機、定時器、機器周期、分頻

        一、引言

        單片機作為嵌入式系統(tǒng)的微控制器,已經(jīng)不是新鮮的事情,作為單片機的定時/計數(shù)器的使用可以說沒有什么難度,但對于需要多個獨立計時的事件,單片機的兩個時鐘顯得有點不能滿足要求,其實不然,合理的運用內(nèi)存和標志位可以實現(xiàn)一個定時器充當多個計時時鐘的效果,本文以51系列單片機為例,實現(xiàn)一個時鐘控制8個獨立馬達的運行過程中,時間分別統(tǒng)計方法。

        二、單片機計數(shù)/定時器的基本原理簡介

        本文以51系列單片機為例介紹定時器的用法,定時/計數(shù)器的原理可以分為定時和計數(shù)兩部分,定時器的原理是通過設(shè)定8位或16位的定時器單元,通過給定定時器單元的初值,然后啟動定時器,于是定時器開始從初值開始累計,每增加一個數(shù)需要特定的時間,這個特定的時間是累加指令的機器周期,是由MCU的晶振的頻率決定。對于51系列的單片機機器周期是時鐘周期的1/12,也就是晶振頻率的12分頻。單片機的定時器原理上相當于一個16位的內(nèi)存單元,通過TMOD可以設(shè)定定時/計數(shù)器的工作方式。計數(shù)值從初值計到全“1”,如果是16位方式則計數(shù)單元變成FF,此時并不產(chǎn)生中斷,當下一個計數(shù)指令加1,導(dǎo)致存儲單元溢出,在中斷控制寄存器允許的情況下產(chǎn)生中斷,通過中斷服務(wù)程序執(zhí)行特定的任務(wù)。計數(shù)器的原理不同之處在于,不是單純的加指令,而是對外部的脈沖計數(shù),常用來測量脈沖的寬度。

        三、時鐘對多事件分別計數(shù)的具體途徑

        對于實時性要求不是很高的時間可以通過如下方式實現(xiàn)。在完成基本的定時器工作方式設(shè)定以后,也就是設(shè)定定時器的計數(shù)方式,比如16位或8位,以及計數(shù)的初始值,以及啟動中斷的方式,建議使“SETB   TR0”的方式。并且允許中斷。在中斷服務(wù)程序中,開辟存儲單元,以8個事件為例,每個事件不一定同時發(fā)生,每個事件發(fā)生以后以相同的時間延遲,再進行下一步的任務(wù),為了完成定時延時,事件發(fā)生的時刻記作A1,A2,A3。。。。。。A10,中段服務(wù)程序中首先檢查有無這些既定的事件發(fā)生,沒有則不做任何處理,恢復(fù)計數(shù)初值后退出中斷,相反,假如檢測到AX(X=1、2、3。。。。。。)事件發(fā)生則給預(yù)先選定的對應(yīng)的內(nèi)存單元增加1,也就是執(zhí)行累加運算,比如,

    A1~50H;        表示A1對應(yīng)的存儲單元是50h
    A2~51H;        表示A2對應(yīng)的存儲單元是51h
    A3~52H;
    。   。
    。   。
    。   。
    A7  57H;       表示A7對應(yīng)的存儲單元是57h

        假如A3事件發(fā)生,則對52H內(nèi)存表示的地址單元增加1,使用的指令是“INC  52H”,可以預(yù)先計算事件延時時間與計數(shù)單元數(shù)值的關(guān)系,當對應(yīng)的數(shù)值到了預(yù)先設(shè)定的值時,執(zhí)行下一任務(wù)。比如開關(guān)操作等等,并且恢復(fù)初始值以便繼續(xù)循環(huán)控制。這樣可以分別對A1到A7,8個任務(wù)分別計時,時間可以相同也可以不同,具體的情況可以根據(jù)中斷程序中寄存器累計的實際值與根據(jù)需要所設(shè)定的預(yù)定值比較而實現(xiàn)。

        四、典型應(yīng)用

        也許大家都看到過繁華街道上的拼圖式廣告牌吧,有十幾個或者幾十個三棱柱,通過旋轉(zhuǎn),構(gòu)成不同的畫面,在每幅畫面都停留一段時間,這正好是上面介紹的情況,當一個棱柱的某個畫面轉(zhuǎn)到特定的角度,比如正對馬路的方向,該畫面必須停留,等所有與此畫面相連接而能拼成完整畫面的其他柱面到來,也就是從柱面開始啟動到下一次停下來需要所有畫面經(jīng)過相同的時間,然而所有的主面不可能同時啟動,可能為了形成某種觀賞效果,有意依次啟動,或由中間開始啟動,逐漸向兩邊延伸,等等,所有這些事件的轉(zhuǎn)動控制實質(zhì)就是定時控制,先啟動,先停止。最終保證所有的畫面構(gòu)成一幅完整的畫面,而且必須是一個平面,我通過這種方法成功地完成了8組和15組轉(zhuǎn)動馬達的起停控制,實踐證明這種方法簡單可行。部分原程序如下所示。基本流程和部分程序代碼如下。

    以下是定時中斷服務(wù)程序的全部代碼,可以完成對8個事件的時間統(tǒng)計,并在時間滿足條件時,調(diào)用子程序OUT01,是對外部開關(guān)的控制指令。通過這段程序,成功實現(xiàn)了一個定時器對多個事件的自動運行控制(以下程序僅供參考)。

    TIME0:                  CLR       TR0
                     PUSH      PSW
                 &nbs

    p;          PUSH      ACC
                            MOV       TL0,#22H;定時100ms重新啟動定時器0
                     MOV       TH0,#1CH
                  
    LINSHI:                 MOV       A,2AH
                            CJNE       A,#0FFH,DEA
                            SETB       TR0
                            POP        ACC
                     POP        PSW   
                            RETI
                          
    DEA:                    MOV       A,2AH
                            CJNE      A,#00H,DE1
                            MOV       A,2CH
                            CJNE      A,#00H,DE1
                            ;SETB      TR0
                            POP       ACC
                     POP       PSW   
      &n

    bsp;                     RETI                                        
    DE1:                    JNB       2AH.0,DEAL1
    DE2:                    JNB       2AH.1,DEAL2
    DE3:                    JNB       2AH.2,DEAL3
    DE4:                    JNB       2AH.3,DEAL4I
    DE5:                    JNB       2AH.4,DEAL5I
    DE6:                    JNB       2AH.5,DEAL6I
    DE7:                    JNB       2AH.6,DEAL7I
    DE8:                    JNB       2AH.7,DEAL8I    
                        LJMP      FINISH
                         
    DEAL4I:                 LJMP      DEAL4                       
    DEAL5I:                 LJMP      DEAL5
    DEAL6I:                 LJMP      DEAL6                       
    DEAL7I:                 LJMP      DEAL7 
    DEAL8I:     

    ;            LJMP      DEAL8                       
    DEAL1:                  JNB       2CH.0,DE2
                            INC       50H
                            MOV       A,50H
                            CJNE      A,#20,DE2
                            CLR       2CH.0                       
                            LCALL     OUT01
                            mov       50h,#00h
                            LJMP      DE2                       
    DEAL2:                  JNB       2CH.1,DE3
                            INC       51H
                            MOV       A,51H
                            CJNE      A,#20,DE3                       
                            CLR 

          2CH.1                       
                            LCALL     OUT01
                            MOV       51H,#00H
                            LJMP      DE3  
     DEAL3:                JNB       2CH.2,DE4
                     INC       52H
                            MOV       A,52H
                            CJNE      A,#20,DE4
                            CLR       2CH.2
                            LCALL     OUT01
                            MOV       52H,#00H
                            LJMP      DE4
    DEAL4:                JNB       2CH.3,DE5I
                    INC       53H
                            MOV       A,53H
                            CJNE      A,#20,DE5I
                            CLR      

    2CH.3
                            LCALL     OUT01
                            MOV       53H,#00H
    DE5I:                   LJMP      DE5
    DEAL5:                 JNB       2CH.4,DE6I
                     INC       54H
                            MOV       A,54H
                            CJNE      A,#20,DE6I
                            CLR       2CH.4
                            MOV       54H,#00H
                            LCALL     OUT01
    DE6I:                   LJMP      DE6
    DEAL6:                  JNB       2CH.5,DE7I
                      INC       55H
                            MOV       A,55H
                            CJNE      A,#20,DE7I
                            CLR       2CH.5
                            LCALL     OUT01
       &nb

    sp;                    MOV       55H,#00H
    DE7I:                   LJMP      DE7
    DEAL7:                  JNB       2CH.6,DE8I
                     INC       56H
                            MOV       A,56H
                            CJNE      A,#20,DE8I
                            CLR       2CH.6
                            LCALL     OUT01
                            MOV       56H,#00H
    DE8I:                   LJMP      DE8
    DEAL8:                 JNB       2CH.7,FINISH
                     INC       57H
                            MOV       A,57H
                            CJNE      A,#20,FINISH
                            CLR       2CH.7
                            LCALL     OUT01
                            MOV       57H,#00H

         &nb

    sp;                     
    FINISH:                 MOV       A,2CH
                            CJNE      A,#00H,TUI
                           
                         
                            SETB      TR0;SETB      TR0
                     POP       ACC
                     POP       PSW
                     RETI
     TUI:                SETB      TR0;開定時器   
                     POP       ACC
                     POP       PSW   
                            RETI
    OUT01:              MOV      A,2CH
                            MOV      P2,A
                            CLR      G0
                            LCALL    DELAY
                            CLR      CLOCK
                            LCALL    DELAY
     

    ;                       SETB     CLOCK
                            NOP
                           
                            CLR      CLOCK
                            SETB     G0
                            LCALL    DELAY
                            RET



    【單時鐘完成多點分別計時的實現(xiàn)和應(yīng)用】相關(guān)文章:

    GPS高精度的時鐘的設(shè)計和實現(xiàn)08-06

    無縫線路軌溫實時監(jiān)測系統(tǒng)的實現(xiàn)和應(yīng)用08-06

    Powerbuilder中樹形視圖的實現(xiàn)與應(yīng)用08-06

    比和比的應(yīng)用08-16

    無線通信SCADA系統(tǒng)的實現(xiàn)與應(yīng)用08-06

    數(shù)據(jù)字典在ArcView GIS中的實現(xiàn)與應(yīng)用08-09

    權(quán)威、地位和自我實現(xiàn)08-17

    用TL494實現(xiàn)單回路控制器08-06

    PowerPC和Dallas的時鐘芯片接口設(shè)計08-06

    国产福利萌白酱精品tv一区_日韩亚洲中字无码一区二区三区_亚洲欧洲高清无码在线_全黄无码免费一级毛片
    1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

      <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
      <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
    2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
      视频一区二区三区久久 | 欧美婷婷开心五月综合视频 | 中文AV免费一区二区三区 | 亚洲中文字幕在线区二 | 在线看欧美十八禁网站 | 日本中文字幕乱码精品 |