<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 談?wù)?1單片機延時子程序

          談?wù)?1單片機延時子程序

          作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201611/321877.htm

          ;*****************************************************************

          ;延時350uS

          ;*****************************************************************

          time350us:movr5,#0afh;351us

          time350us_1:djnzr5,time350us_1

          ret

          ;*****************************************************************

          ;延時500uS

          ;*****************************************************************

          time500us:movr5,#0fah;501us

          time500us_1:djnzr5,time500us_1

          ret

          ;*****************************************************************

          ;延時1mS

          ;*****************************************************************

          time1ms:movr5,#0fah;1001us

          time1ms_1:nop

          nop

          djnzr5,time1ms_1

          ret

          ;*****************************************************************

          ;延時2.5mS

          ;*****************************************************************

          time2_5ms:movr5,#05h;2.496ms

          time2_5ms_1:movr6,#0f8h;497us

          djnzr6,$

          djnzr5,time2_5ms_1

          ret

          ;*****************************************************************

          ;延時10mS

          ;*****************************************************************

          time10ms:movr5,#14h;10.262ms

          time10ms_1:movr6,#0ffh;511us

          djnzr6,$

          djnzr5,time10ms_1

          ret

          ;*****************************************************************

          ;延時50mS

          ;*****************************************************************

          time50ms:movr5,#63h;49.996ms

          time50ms_1:movr6,#0fbh;503us

          djnzr6,$

          djnzr5,time50ms_1

          ret

          ;*****************************************************************

          ;延時100mS

          ;*****************************************************************

          time100ms:movr5,#0c3h;100.036ms

          time100ms_1:movr6,#0ffh;511us

          djnzr6,$

          djnzr5,time100ms_1

          ret

          ;*****************************************************************

          ;延時200mS

          ;*****************************************************************

          time200ms:movr5,#02h;250.351ms

          time200ms_1:movr6,#0f4h;125.173ms

          time200ms_2:movr7,#0ffh;511us

          djnzr7,$

          djnzr6,time200ms_2

          djnzr5,time200ms_1

          ret

          ;*****************************************************************

          ;延時500mS

          ;*****************************************************************

          time500ms:movr5,#04h;500.701ms

          time500ms_1:movr6,#0f4h;125.173ms

          time500ms_2:movr7,#0ffh;511us

          djnzr7,$

          djnzr6,time500ms_2

          djnzr5,time500ms_1

          ret

          ;*****************************************************************

          ;延時1S

          ;*****************************************************************

          time1s:movr5,#08h;1001.401ms

          time1s_1:movr6,#0f4h;125.173ms

          time1s_2:movr7,#0ffh;511us

          djnzr7,$

          djnzr6,time1s_2

          djnzr5,time1s_1

          ret

          12M晶振 機器周期為1US  NOP為單周期指令?。模剩危跒殡p周期指令.

          3)

          ;;晶振12MHZ,延時1秒

          DELAY:MOV72H,#100

          LOOP3:MOV71H,#100

          LOOP1:MOV70H,#47

          LOOP0:DJNZ70H,LOOP0

          NOP

          DJNZ71H,LOOP1

          MOV70H,#46

          LOOP2:DJNZ70H,LOOP2

          NOP

          DJNZ72H,LOOP3

          MOV70H,#48

          LOOP4:DJNZ70H,LOOP4

          4);延時1分鐘子程序,F(xiàn)=6MHz

          ;程序已測過,延時時間60,000,000.0uS

          delay60s:mov r3,#228

          mov r2,#253

          mov r1,#219

          loop1:djnz r1,$

          djnz r2,loop1

          djnz r3,loop1

          nop

          ret

          5)計算機反復(fù)執(zhí)行一段程序以達到延時的目的稱為軟件延時,單片機程序中經(jīng)常需要短時間的延時,但是相當(dāng)一部分人對延時程序很模糊,對延時程序的算法不夠了解,在這里我以12MHz晶振和兩個經(jīng)典延時子程序為例,詳細(xì)分析單片機匯編延時程序。

          何為時鐘周期、機器周期、和指令周期?

          時鐘周期:也就是振蕩周期,以12MHz的時鐘脈沖為例,那時鐘周期就為(1/12000000)s=(1/12)us;

          機器周期:1個機器周期=6個狀態(tài)周期=12個時鐘周期=1us;

          指令周期:CPU執(zhí)行一條指令所需要的時間稱為指令周期,指令周期是以機器周期為單位的,不同的指令所需的機器周期不一定相同,可參考51單片機指令速查表。

          由上可得:CPU執(zhí)行一條單周期指令,需要1us;執(zhí)行一條雙周期指令需要2us。

          下面是具體的延時子程序分析:

          0.1s延時子程序(12MHz晶振):

          MOV R7,#200;單周期指令(1us)

          D1:MOV R6,#250;單周期指令(1us)

          DJNZ R6,$;雙周期指令(2us)//該指令自身執(zhí)行R6次

          DJNZ R7,D1;雙周期指令(2us)//D1執(zhí)行R7次

          RET;雙周期指令(2us)

          T=1+(1+2*R6+2)*R7+2

          =100603us

          ≈0.1s

          0.5s延時子程序(12MHz晶振):

          MOV R7,#5;單周期指令(1us)

          D1:MOV R6,#200;單周期指令(1us)

          D2:MOV R5,#250;單周期指令(1us

          DJNZ R5,$;雙周期指令(2us)//該指令自身執(zhí)行R5次

          DJNZ R6,D2;雙周期指令(2us)//D2執(zhí)行R6次

          DJNZ R7,D1;雙周期指令(2us)//D1執(zhí)行R7次

          RET;雙周期指令(2us)

          T=1+[1+(1+2*R5+2)*R6+2]*R7+2

          =503018us

          ≈0.5s

          6) 51單片機經(jīng)典流水燈程序,在51單片機的P2口接上8個發(fā)光二極管,產(chǎn)生流水燈的移動效果。

          ORG0;程序從0地址開始

          START:MOVA,#0FEH;讓ACC的內(nèi)容為11111110

          LOOP:MOVP2,A;讓P2口輸出ACC的內(nèi)容

          RRA;讓ACC的內(nèi)容左移

          CALLDELAY;調(diào)用延時子程序

          LJMPLOOP;跳到LOOP處執(zhí)行

          ;0.1秒延時子程序(12MHz晶振)===================

          DELAY:MOVR7,#200;R7寄存器加載200次數(shù)

          D1:MOVR6,#250;R6寄存器加載250次數(shù)

          DJNZR6,$;本行執(zhí)行R6次

          DJNZR7,D1;D1循環(huán)執(zhí)行R7次

          RET;返回主程序

          END;結(jié)束程序


          上一頁 1 2 下一頁

          關(guān)鍵詞: 51單片機延時子程

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();