国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

你好!歡迎來(lái)到深圳市穎特新科技有限公司!
語(yǔ)言
當(dāng)前位置:首頁(yè) >> 技術(shù)中心 >> 單片機(jī)入門 >> 單片機(jī)匯編延時(shí)程序的理解

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

關(guān)鍵字:單片機(jī) 匯編延時(shí) 作者:admin 來(lái)源:不詳 發(fā)布時(shí)間:2018-04-24  瀏覽:3

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

DELAY: MOV R7,#250;D1: MOV R6,#250;D2: DJNZ R6,D2;DJNZ R7,D1;RET

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

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

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

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

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

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

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

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

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

那么,計(jì)算機(jī)執(zhí)行一個(gè)語(yǔ)句耗費(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í)行不完,肯定要延長(zhǎng)了。子程序里面的MOV是單周期、DJNZ是雙周期。

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

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

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

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

第四句:DJNZ R7,D1 ; 從第三句順延過(guò)來(lái)250次,雙周期*2。500

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

我們可以通過(guò)調(diào)整R6、R7的數(shù)值來(lái)調(diào)整延時(shí)的長(zhǎng)度。事實(shí)上,8位計(jì)算機(jī)中,R6之類的工作寄存器地址最大只能放下255的十進(jìn)制數(shù)值,因此要通過(guò)上述程序達(dá)到更長(zhǎng)的延時(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)......

編輯:admin  最后修改時(shí)間:2018-04-24

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

国产一区二区三区口爆在线| 大香蕉久久精品一区二区字幕| 国产精品蜜桃久久一区二区| 国产不卡视频一区在线| 午夜久久久精品国产精品| 亚洲一区二区三区在线中文字幕 | 国产一区欧美一区日本道| 国产又色又爽又黄的精品视频| 美女极度色诱视频在线观看 | 国产精品尹人香蕉综合网 | 中文字幕一区二区熟女| 亚洲国产一级片在线观看| 不卡一区二区在线视频| 好吊妞视频免费在线观看| 97人摸人人澡人人人超碰| 偷拍洗澡一区二区三区| 风间中文字幕亚洲一区| 日韩毛片视频免费观看| 99久久精品久久免费| 91免费一区二区三区| 亚洲一区二区三区国产| 亚洲精品深夜福利视频| 五月婷婷亚洲综合一区| 久久精品亚洲欧美日韩| 麻豆欧美精品国产综合久久| 国产日产欧美精品视频| 超薄肉色丝袜脚一区二区| 欧美一区二区三区五月婷婷| 国产中文字幕一二三区| 免费观看一级欧美大片| 欧美黑人巨大一区二区三区| 99热九九在线中文字幕| 日韩精品小视频在线观看| 国产成人午夜av一区二区| 久久人妻人人澡人人妻| 欧美久久一区二区精品| 一区二区日本一区二区欧美| 国产精品一区二区传媒蜜臀| 中文字幕av诱惑一区二区| 国产欧美日韩综合精品二区| 暴力性生活在线免费视频|