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

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

匯編延時(shí)程序算法詳解

關(guān)鍵字:匯編 延時(shí)程序 算法 詳解 作者:admin 來源:不詳 發(fā)布時(shí)間:2018-05-19  瀏覽:12

計(jì)算機(jī)反復(fù)執(zhí)行一段程序以達(dá)到延時(shí)的目的稱為軟件延時(shí),單片機(jī)應(yīng)用程序中經(jīng)常需要短時(shí)間延時(shí),有時(shí)要求很高的精度,網(wǎng)上或書中雖然有現(xiàn)成的公式可以套用,但在部分算法講解中發(fā)現(xiàn)有錯誤之處,而且延時(shí)的具體算法講得并不清楚,相當(dāng)一部分人對此仍很模糊,授人魚,不如授之以漁,本文將以12MHZ晶振為例,詳細(xì)講解MCS-51單片機(jī)中匯編程序延時(shí)的精確算法。擴(kuò)展閱讀:51單片機(jī)定時(shí)、中斷練習(xí):用延時(shí)程序做閃爍燈

指令周期、機(jī)器周期與時(shí)鐘周期

指令周期:CPU執(zhí)行一條指令所需要的時(shí)間稱為指令周期,它是以機(jī)器周期為單位的,指令不同,所需的機(jī)器周期也不同。

時(shí)鐘周期:也稱為振蕩周期,一個(gè)時(shí)鐘周期 =晶振的倒數(shù)。

MCS-51單片機(jī)的一個(gè)機(jī)器周期=6個(gè)狀態(tài)周期=12個(gè)時(shí)鐘周期。

MCS-單片機(jī)的指令有單字節(jié)、雙字節(jié)和三字節(jié)的,它們的指令周期不盡相同,一個(gè)單周期指令包含一個(gè)機(jī)器周期,即12個(gè)時(shí)鐘周期,所以一條單周期指令被執(zhí)行所占時(shí)間為12*(1/12000000)=1µs。

程序分析

例1 50ms 延時(shí)子程序:

DEL:MOV R7,#200 ①

DEL1:MOV R6,#125 ②

DEL2:DJNZ R6,DEL2 ③

DJNZ R7,DEL1 ④

RET ⑤

精確延時(shí)時(shí)間為:1+(1*200)+(2*125*200)+(2*200)+2

=(2*125+3)*200+3 ⑥

=50603µs

≈50ms

由⑥整理出公式(只限上述寫法)延時(shí)時(shí)間=(2*內(nèi)循環(huán)+3)*外循環(huán)+3 ⑦

詳解:DEL這個(gè)子程序共有五條指令,現(xiàn)在分別就 每一條指令 被執(zhí)行的次數(shù)和所耗時(shí)間進(jìn)行分析。

第一句:MOV R7,#200 在整個(gè)子程序中只被執(zhí)行一次,且為單周期指令,所以耗時(shí)1µs

第二句:MOV R6,#125 從②看到④只要R7-1不為0,就會返回到這句,共執(zhí)行了R7次,共耗時(shí)200µs

第三句:DJNZ R6,DEL2 只要R6-1不為0,就反復(fù)執(zhí)行此句(內(nèi)循環(huán)R6次),又受外循環(huán)R7控制,所以共執(zhí)行R6*R7次,因是雙周期指令,所以耗時(shí)2*R6*R7µs。

例2 1秒延時(shí)子程序:

DEL:MOV R7,#10 ①

DEL1:MOV R6,#200 ②

DEL2:MOV R5,#248 ③

DJNZ R5,$ ④

DJNZ R6,DEL2 ⑤

DJNZ R7,DEL1 ⑥

RET ⑦

對每條指令進(jìn)行計(jì)算得出精確延時(shí)時(shí)間為:

1+(1*10)+(1*200*10)+(2*248*200*10)+(2*200*10)+(2*10)+2

=[(2*248+3)*200+3]*10+3 ⑧

=998033µs≈1s

由⑧整理得:延時(shí)時(shí)間=[(2*第一層循環(huán)+3)*第二層循環(huán)+3]*第三層循環(huán)+3 ⑨

此式適用三層循環(huán)以內(nèi)的程序,也驗(yàn)證了例1中式⑦(第三層循環(huán)相當(dāng)于1)的成立。

注意,要實(shí)現(xiàn)較長時(shí)間的延時(shí),一般采用多重循環(huán),有時(shí)會在程式序里加入NOP指令,這時(shí)公式⑨不再適用,下面舉例分析。

例3仍以1秒延時(shí)為例

DEL:MOV R7,#10 1指令周期1

DEL1:MOV R6,#0FFH 1指令周期10

DEL2:MOV R5,#80H 1指令周期255*10=2550

KONG:NOP 1指令周期128*255*10=326400

DJNZ R5,$ 2指令周期2*128*255*10=652800

DJNZ R6,DEL2 2指令周期2*255*10=5110

DJNZ R7,DEL1 2指令周期2*10=20

RET 2

延時(shí)時(shí)間=1+10+2550+326400+652800+5110+20+2 =986893µs約為1s

整理得:延時(shí)時(shí)間=[(3*第一層循環(huán)+3)*第二層循環(huán)+3]*第三層循環(huán)+3 ⑩

結(jié)論:論文針對初學(xué)者的困惑,對匯編程序的延時(shí)算法進(jìn)行了分步講解,并就幾種不同寫法分別總結(jié)出相應(yīng)的計(jì)算公式,只要仔細(xì)閱讀例1中的詳解,并用例2、例3來加深理解,一定會掌握各種類型程序的算法并加以運(yùn)用。

【更多資源】

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

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

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

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

日韩一区欧美二区国产| 深夜福利欲求不满的人妻| 黄片免费观看一区二区| 日韩欧美高清国内精品| 国产精品欧美一区两区| 91日韩欧美中文字幕| 男生和女生哪个更好色| 国产午夜福利在线观看精品| 欧美日韩中黄片免费看| 色婷婷成人精品综合一区| 色哟哟在线免费一区二区三区 | 日韩欧美三级中文字幕| 国产精品一区欧美二区| 人妻巨大乳一二三区麻豆| 丰满人妻一二区二区三区av| 国产一区二区在线免费| 亚洲中文字幕亲近伦片| 午夜精品麻豆视频91| 亚洲视频一区二区久久久| 超薄丝袜足一区二区三区| 亚洲精品中文字幕无限乱码| 日韩精品综合福利在线观看| 91欧美日韩一区人妻少妇| 亚洲男人的天堂久久a| 精品少妇一区二区三区四区| 香蕉久久夜色精品国产尤物 | 国产精品福利一级久久| 国产亚洲欧美日韩精品一区| 欧美日韩黑人免费观看| 欧美成人免费一级特黄| 亚洲a码一区二区三区| 高清一区二区三区大伊香蕉| 九九热精彩视频在线免费| 午夜日韩在线观看视频| 丰满少妇高潮一区二区| 激情内射日本一区二区三区| 亚洲欧美日韩色图七区| 日本少妇aa特黄大片| 亚洲午夜av久久久精品| 99久久国产精品成人观看| 国产亚洲午夜高清国产拍精品|