<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發(fā)網(wǎng)

      電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊
      搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機(jī) >> 正文

      單片機(jī)匯編延時(shí)程序的理解

      作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2017/5/20

      單片機(jī)匯編實(shí)現(xiàn)延遲的程序代碼:

      DELAY: MOV R7,#250 ;

      D1: MOV R6,#250 ;

      D2: DJNZ R6,D2 ;

      DJNZ R7,D1 ;

      RET

       

              如果用高級(jí)語言編程,只需要簡單地調(diào)用延時(shí)函數(shù)就可以實(shí)現(xiàn),但是計(jì)算機(jī)具體是怎么實(shí)現(xiàn)的呢?要想知其所以然,還得從匯編開始學(xué)起。

              冒號(hào)前面的“DELAY”、“D1”、“D2”為語句行的名字,是為了程序的條件語句跳轉(zhuǎn)用的,分號(hào)后面為注釋,計(jì)算機(jī)執(zhí)行時(shí)將過濾掉這些信息,最大限度減少代碼長度,提高效率。

      DELAY: MOV R7,#250 ; 名字為“DELAY”的語句:意思是將CPU內(nèi)部內(nèi)存RAM的R7位置填寫為250(原來為0,為什么是0呢?因?yàn)槿魏纬绦蜷_始執(zhí)行前都要復(fù)位,就像我們打算盤要將算子復(fù)位一樣,或者我們用沙盤寫字,要將沙盤抹平類似)

      D1: MOV R6,#250 ; 名字為“D1”的語句:將R6位置填寫為250

      D2: DJNZ R6,D2 ; 名字為“D2”的語句:將R6位置的250減1,如果為0就繼續(xù)執(zhí)行下一條,不為0就繼續(xù)執(zhí)行D2這一句,因?yàn)镽6=250,所以這個(gè)語句要原地踏步執(zhí)行250次!

      DJNZ R7,D1 ; 這句沒有名字,因?yàn)闆]有別的語句要跳到這里,所以就省略了。R7同樣等于250,但它不是原地踏步,而是跳回了D1,這么干,D!、D2和本句將被循環(huán)執(zhí)行250遍,需要強(qiáng)調(diào)的是:D2語句自身每次都要執(zhí)行250遍,也就是執(zhí)行了250*250=62500遍!

      RET ;子程序結(jié)束(因?yàn)檠訒r(shí)程序一般不作為獨(dú)立程序存在,它只是一個(gè)子程序,也就是高級(jí)語言中的一個(gè)函數(shù),看到這個(gè)字符,子程序?qū)⑻氐侥赋绦颍M(jìn)行下一步)。

       

              這個(gè)子程序這么反復(fù)地循環(huán)指令,到底有什么意義呢?又是怎么實(shí)現(xiàn)的延時(shí)程序呢?說起來計(jì)算機(jī)真是有點(diǎn)笨,它是*數(shù)程序執(zhí)行的次數(shù)來累加時(shí)間的!也就是說語句本身就是為了浪費(fèi)時(shí)間!哈哈,可笑吧?這就像你沒有鐘表,但是你知道你跑操場一圈是一分鐘,然后就繞著操場跑了60圈,時(shí)間過了正好一小時(shí)一樣。

              如果是人的話,誰也不會(huì)笨到干這么累的活兒來計(jì)時(shí),但計(jì)算機(jī)不一樣,它不論靜止還是運(yùn)動(dòng),程序總是一拍一拍地運(yùn)行著,所以它不累。

       

              那么,計(jì)算機(jī)執(zhí)行一個(gè)語句耗費(fèi)的時(shí)間是多少呢?

              以51型單片機(jī)為例:如果采用12MHz的晶振,運(yùn)行一個(gè)機(jī)器周期為1微秒,具體為什么暫時(shí)不管。單片機(jī)的指令系統(tǒng)分為單周期、雙周期和三周期指令(三周期實(shí)際上占用四個(gè)周期,多余一個(gè)周期浪費(fèi)掉),這是有指令的內(nèi)容決定的,內(nèi)容多的單周期執(zhí)行不完,肯定要延長了。子程序里面的MOV是單周期、DJNZ是雙周期。

       

              這樣,我們就可以算算這個(gè)子程序累計(jì)進(jìn)行了多少個(gè)周期,然后乘以1微秒,就算出它占用的時(shí)間,也就是延時(shí)的時(shí)長了!

              第一句:DELAY: MOV R7,#250 ;執(zhí)行了一次,沒有任何語句跳轉(zhuǎn)給它,單周期。1

              第二句:D1: MOV R6,#250 ;執(zhí)行了250次,全部是第四句跳過來的,單周期。250

              第三句:D2: DJNZ R6,D2 ;原地執(zhí)行了250次,從第二句順延(第二句執(zhí)行完,沒有其它跳轉(zhuǎn)的話肯定要執(zhí)行第三句)過來250次,也就是250*250=62500次,雙周期*2。125000

              第四句:DJNZ R7,D1 ; 從第三句順延過來250次,雙周期*2。500

              總計(jì):1+250+125000+500=1257501次,乘以1微秒,換算約為0.13秒。

              我們可以通過調(diào)整R6、R7的數(shù)值來調(diào)整延時(shí)的長度。事實(shí)上,8位計(jì)算機(jī)中,R6之類的工作寄存器地址最大只能放下255的十進(jìn)制數(shù)值,因此要通過上述程序達(dá)到更長的延時(shí)是辦不到的。

              那怎么辦呢?

              我們可以再增加一個(gè)R4,讓上述的程序最多可以循環(huán)255遍,這樣,0.13秒的200多倍就是30秒上下了,不夠的話再增加循環(huán),又可以擴(kuò)大200多倍,當(dāng)然,工作寄存器的數(shù)量是有限的,因此這個(gè)延時(shí)程序也是有限的,如果還不夠用怎么辦呢,就目前我所學(xué)的知識(shí),只能在母程序里面設(shè)置循環(huán)了,也就是讓這個(gè)子程序在母程序里面繼續(xù)循環(huán)......
       

      Tags:單片機(jī)匯編延時(shí)程序的理解,單片機(jī)教程  
      責(zé)任編輯:admin
      請文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個(gè)字
      [ 查看全部 ] 網(wǎng)友評(píng)論
      最新推薦
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 国产色综合天天综合网| 亚洲综合久久夜AV | 久久久久久青草大香综合精品| 91精品国产综合久久婷婷| 色综合久久久久久久久五月| 亚洲综合久久一本伊伊区| 亚洲综合小说另类图片动图| 亚洲国产aⅴ综合网| 亚洲精品综合久久| 97色伦图片97综合影院久久| 五月丁香六月综合缴清无码 | 久久香蕉综合色一综合色88| 色欲天天婬色婬香视频综合网| 色爱区综合激情五月综合激情| 一本大道加勒比久久综合| av一本久道久久综合久久鬼色| 亚洲一区综合在线播放| 色爱区综合激情五月综合激情| 亚洲国产成人综合精品| 色综合色狠狠天天综合色| 日本伊人色综合网| 综合人妻久久一区二区精品| 日韩无码系列综合区| 亚洲欧美综合精品成人导航| 亚洲综合中文字幕无线码| 久久综合国产乱子伦精品免费| 丁香六月激情综合| 国产美女亚洲精品久久久综合| 在线成人综合色一区| 亚洲综合成人婷婷五月网址| 天天干天天色综合| 国产亚洲综合视频| 久久久久亚洲AV综合波多野结衣| 区二区三区激情综合 | 亚洲综合在线成人一区| 亚洲色婷婷综合久久| 久久综合九色综合网站| 亚洲精品第一国产综合亚AV| 国产日韩综合一区二区性色AV| 五月综合色婷婷影院在线观看| 色欲综合久久躁天天躁|