日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

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

51單片機匯編延時程序算法詳解

關鍵字:51單片機 匯編 延時程序 算法 作者:admin 來源:不詳 發(fā)布時間:2018-05-19  瀏覽:5

51單片機匯編延時程序算法詳解

將以12MHZ晶振為例,詳細講解MCS-51單片機中匯編程序延時的精確算法。

指令周期、機器周期與時鐘周期

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

時鐘周期:也稱為振蕩周期,一個時鐘周期 =晶振的倒數。

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

MCS-51單片機的指令有單字節(jié)、雙字節(jié)和三字節(jié)的,它們的指令周期不盡相同,一個單周期指令包含一個機器周期,即12個時鐘周期,所以一條單周期指令被執(zhí)行所占時間為12*(1/12000000)=1μs。擴展閱讀:單片機有哪些延時方法詳細介紹

程序分析

例1 50ms 延時子程序:

DEL:MOV R7,#200 ①

DEL1:MOV R6,#125 ②

DEL2:DJNZ R6,DEL2 ③

DJNZ R7,DEL1 ④

RET ⑤

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

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

=50603μs

≈50ms

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

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

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

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

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

例2 1秒延時子程序:

DEL:MOV R7,#10 ①

DEL1:MOV R6,#200 ②

DEL2:MOV R5,#248 ③

DJNZ R5,$ ④

DJNZ R6,DEL2 ⑤

DJNZ R7,DEL1 ⑥

RET ⑦

對每條指令進行計算得出精確延時時間為:

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

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

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

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

例3仍以1秒延時為例

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

延時時間=1+10+2550+326400+652800+5110+20+2 =986893μs約為1s

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

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

【更多資源】

編輯:admin  最后修改時間: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

蛟河市| 阿拉尔市| 房产| 保康县| 阜城县| 西华县| 玉溪市| 邻水| 察雅县| 富平县| 城口县| 察雅县| 万山特区| 安岳县| 云浮市| 封丘县| 绍兴县| 中山市| 汤阴县| 武乡县| 文昌市| 绩溪县| 攀枝花市| 涡阳县| 喜德县| 临汾市| 永德县| 河东区| 盱眙县| 宜章县| 温泉县| 台北市| 阜宁县| 呼伦贝尔市| 淳安县| 武穴市| 古田县| 南江县| 平阴县| 九龙县| 郴州市|