一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

51單片機(jī)匯編延時(shí)程序算法詳解

h1654155971.7688 ? 來源:未知 ? 作者:李倩 ? 2018-03-12 09:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

將以12MHZ晶振為例,詳細(xì)講解MCS-51單片機(jī)中匯編程序延時(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-51單片機(jī)的指令有單字節(jié)、雙字節(jié)和三字節(jié)的,它們的指令周期不盡相同,一個(gè)單周期指令包含一個(gè)機(jī)器周期,即12個(gè)時(shí)鐘周期,所以一條單周期指令被執(zhí)行所占時(shí)間為12*(1/12000000)=1μs。擴(kuò)展閱讀:?jiǎn)纹瑱C(jī)有哪些延時(shí)方法詳細(xì)介紹

程序分析

例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,就會(huì)返回到這句,共執(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 ⑦

對(duì)每條指令進(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)較長(zhǎng)時(shí)間的延時(shí),一般采用多重循環(huán),有時(shí)會(huì)在程式序里加入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é)論:針對(duì)初學(xué)者的困惑,對(duì)匯編程序的延時(shí)算法進(jìn)行了分步講解,并就幾種不同寫法分別總結(jié)出相應(yīng)的計(jì)算公式,只要仔細(xì)閱讀例1中的詳解,并用例2、例3來加深理解,一定會(huì)掌握各種類型程序的算法并加以運(yùn)用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C51單片機(jī)
    +關(guān)注

    關(guān)注

    12

    文章

    164

    瀏覽量

    35418

原文標(biāo)題:51單片機(jī)匯編延時(shí)程序算法詳解

文章出處:【微信號(hào):weixin21ic,微信公眾號(hào):21ic電子網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    51單片機(jī)串口檢測(cè)程序

    本內(nèi)容提供了51單片機(jī)串口檢測(cè)程序,詳解列出了本程序
    發(fā)表于 05-09 11:43 ?7064次閱讀

    51單片機(jī)匯編設(shè)計(jì)實(shí)例

    本書包含3部分內(nèi)容:第1部分介紹51系列單片機(jī)的硬件資源、匯編指令與C語(yǔ)言編程基礎(chǔ);第2部分介紹5個(gè)單片機(jī)匯編與C
    發(fā)表于 12-23 14:42 ?806次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>匯編</b>設(shè)計(jì)實(shí)例

    51單片機(jī)匯編程序

    51單片機(jī)匯編程序包。
    發(fā)表于 01-06 14:12 ?16次下載

    51單片機(jī)匯編語(yǔ)言教程_單片機(jī)延時(shí)程序分析

    51單片機(jī)匯編語(yǔ)言教程:5課單片機(jī)延時(shí)程序分析
    發(fā)表于 01-19 15:26 ?0次下載

    51單片機(jī)匯編語(yǔ)言教程_第一個(gè)單片機(jī)程序

    51單片機(jī)匯編語(yǔ)言教程:4課第一個(gè)單片機(jī)程序
    發(fā)表于 01-19 15:27 ?0次下載

    51單片機(jī)匯編語(yǔ)言教程_單片機(jī)匯編課程簡(jiǎn)介

    51單片機(jī)匯編語(yǔ)言教程:1課單片機(jī)匯編課程簡(jiǎn)介
    發(fā)表于 01-19 15:27 ?0次下載

    基于51單片機(jī)匯編語(yǔ)言教程:22課單片機(jī)串行口通信程序設(shè)計(jì)

    基于51單片機(jī)匯編語(yǔ)言教程:22課單片機(jī)串行口通信程序設(shè)計(jì)
    發(fā)表于 09-04 11:00 ?25次下載

    51單片機(jī)匯編程序有哪些?51單片機(jī)匯編程序集詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)匯編程序有哪些?51單片機(jī)匯編程序集詳細(xì)資料免費(fèi)下載。
    發(fā)表于 09-06 16:31 ?55次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>匯編程序</b>有哪些?<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>匯編程序</b>集詳細(xì)資料免費(fèi)下載

    51單片機(jī)通用匯編延時(shí)程序,

    51單片機(jī)通用匯編延時(shí)程序, 關(guān)鍵字:51
    的頭像 發(fā)表于 09-20 19:42 ?1678次閱讀

    51單片機(jī)匯編延時(shí)程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)匯編延時(shí)程序免費(fèi)下載。用6MHz晶振,51
    發(fā)表于 08-05 17:34 ?4次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>匯編</b><b class='flag-5'>延時(shí)</b><b class='flag-5'>程序</b>免費(fèi)下載

    使用單片機(jī)匯編跳轉(zhuǎn)指令延時(shí)一秒的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)匯編跳轉(zhuǎn)指令延時(shí)一秒的程序免費(fèi)下載。
    發(fā)表于 07-30 17:35 ?0次下載
    使用<b class='flag-5'>單片機(jī)</b><b class='flag-5'>匯編</b>跳轉(zhuǎn)指令<b class='flag-5'>延時(shí)</b>一秒的<b class='flag-5'>程序</b>免費(fèi)下載

    51單片機(jī)的精確延時(shí)問題詳細(xì)資料講解

    一些朋友提出使用C語(yǔ)言編寫51單片機(jī)延時(shí)程序的精度不夠,事實(shí)上的確如此,由于C語(yǔ)言最終要編譯成匯編語(yǔ)言運(yùn)行,因此,
    發(fā)表于 07-17 17:38 ?0次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的精確<b class='flag-5'>延時(shí)</b>問題詳細(xì)資料講解

    使用51單片機(jī)進(jìn)行匯編延時(shí)計(jì)算的詳細(xì)資料分析

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)進(jìn)行匯編延時(shí)計(jì)算的詳細(xì)資料分析。
    發(fā)表于 06-21 17:43 ?0次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>進(jìn)行<b class='flag-5'>匯編</b><b class='flag-5'>延時(shí)</b>計(jì)算的詳細(xì)資料分析

    51單片機(jī)匯編程序庫(kù)

    下面是一些51單片機(jī)匯編語(yǔ)言編程常用到的子程序代碼庫(kù)
    的頭像 發(fā)表于 12-06 17:31 ?1w次閱讀

    51單片機(jī)如何跳出wile循環(huán)_51單片機(jī)(九)匯編指令

    1 往期鏈接Chenglin Li:51單片機(jī)(一)Visual Basic串口通信程序Chenglin Li:51單片機(jī)(二)
    發(fā)表于 11-22 20:21 ?73次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>如何跳出wile循環(huán)_<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>(九)<b class='flag-5'>匯編</b>指令