国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

51單片機(jī)延時程序的延時時間計算

這篇具有很好參考價值的文章主要介紹了51單片機(jī)延時程序的延時時間計算。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? ? ? ? 最近在上單片機(jī)原理及應(yīng)用課程,做實驗的時候遇到了軟件延時程序如何計算延時時間的問題,經(jīng)過一陣摸索終于領(lǐng)悟到其中奧秘......耶(比耶)。?延時函數(shù)是使用STC-ISP生成的,晶振為12MHz,指令集是STC-Y1(即89系列),使用do while()循環(huán)實現(xiàn)軟件精確延時。下面講解一下其中的延時時間是如何計算的。?

1. 首先我們先設(shè)置斷點是程序運行到進(jìn)入delay_10ms()函數(shù)前,可以在圖1右下角看到此時程序運行時間為0.00040800sec,此時我們看向反匯編窗口(Disassembly)。請注意圈出來的“LCALL delay_10ms”匯編指令,程序運行到代碼“ int a=100 ”并完成賦值后往下運行遇到delay_10ms(),子程序調(diào)用指令LCALL 完成對delay_10ms()的調(diào)用,該指令消耗24個時鐘周期,即 t1=2us。

?51單片機(jī)延時程序的延時時間計算

圖1

2. 接著點擊調(diào)試中的單步執(zhí)行按鈕,使程序轉(zhuǎn)到delay_10ms()中,圖2可以看到,首先執(zhí)行“ MOV R7,#0x14”(即 i=20),接著執(zhí)行“MOV R6,#0x71”,查STC-ISP指令表可知將立即數(shù)賦值給寄存器指令“MOV Rn #data”消耗12個時鐘周期,故上述兩部共消耗 t2=2us。

51單片機(jī)延時程序的延時時間計算

?圖2

3. i,j賦值完再接著往下是執(zhí)行do{}里面的內(nèi)容“while(--j)”,“DJNZ? R6 , C:005D”指令的意思是寄存器R6里面的內(nèi)容減1不為0則轉(zhuǎn)移到“C:005D”處,即繼續(xù)執(zhí)行j自減。DJNZ指令消耗24個時鐘周期,一共執(zhí)行113次,即113 X 2us = 226us 。

4. 當(dāng)j從113自減到0后,不滿足DJNZ條件,則程序繼續(xù)往下執(zhí)行“ while(--i)”,即判斷do while()的條件。該代碼對應(yīng)匯編指令為“ DJNZ? R7 , C:005D”,即i=20,自減1為19,不為0則轉(zhuǎn)移到C:005D,繼續(xù)執(zhí)行j自減。注意,接下來的步驟很容易算錯,很多人可能誤以為j會再次從113開始自減,但實際不是的,前面存放 j=113 的寄存器R6從113自減到0后,此時再次自減 將從256開始,因為寄存器值從0開始減1后將會變成11111111,即256。這樣,整個循環(huán)時間就很容易得出來了:t3 = 113 X 1?X 2us + 256 X 19 X 2us + 20 X 2us = 9954us

5. delay_10ms()程序結(jié)束后往下是 子程序返回指令RET,該指令功能是返回到子程序調(diào)用指令下一指令處,即返回進(jìn)delay_ms()前的地方。該指令消耗24個時鐘周期,故 t4 = 2us。

綜上:可得delay_10ms()執(zhí)行時間,t = t1 + t2 + t3 + t4 = 2 + 2 + 9954 + 2 = 10000us = 10ms。

驗證:分別在進(jìn)delay_10ms() 和 執(zhí)行完delay_10ms()后設(shè)置斷點調(diào)試,如圖3,可得時間 :

t = 0.01040800sec - 0.00040800sec = 0.01000000sec,即10ms。

51單片機(jī)延時程序的延時時間計算

?圖3

(第一次寫文章,寫的不好請多多諒解哈)文章來源地址http://www.zghlxwxcb.cn/news/detail-511245.html

到了這里,關(guān)于51單片機(jī)延時程序的延時時間計算的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • ###51單片機(jī)學(xué)習(xí)(2)-----如何通過C語言運用延時函數(shù)設(shè)計LED流水燈

    ###51單片機(jī)學(xué)習(xí)(2)-----如何通過C語言運用延時函數(shù)設(shè)計LED流水燈

    ? 前言:感謝您的關(guān)注哦,我會持續(xù)更新編程相關(guān)知識,愿您在這里有所收獲。如果有任何問題,歡迎溝通交流!期待與您在學(xué)習(xí)編程的道路上共同進(jìn)步。 ? ? ? 目錄 一.? 延時函數(shù)的生成? 1.通過延時計算器得到延時函數(shù)? 2.可賦值改變的延時函數(shù)? 二.? LED模塊編寫原理?

    2024年02月19日
    瀏覽(20)
  • 單片機(jī)匯編延時程序算法詳解

    在單片機(jī)編程中,延時程序是一項常見的任務(wù)。它用于控制程序在執(zhí)行期間暫停一段時間,以實現(xiàn)特定的時間延遲。延時程序在許多應(yīng)用中都非常有用,例如控制LED的閃爍頻率、定時器的計時等。本文將詳細(xì)介紹單片機(jī)匯編語言中延時程序的算法,并提供相應(yīng)的源代碼。 延時

    2024年02月04日
    瀏覽(25)
  • 【普中】基于51單片機(jī)簡易計算器數(shù)碼管顯示設(shè)計( proteus仿真+程序+實物演示+講解視頻)

    【普中】基于51單片機(jī)簡易計算器數(shù)碼管顯示設(shè)計( proteus仿真+程序+實物演示+講解視頻)

    【普中開發(fā)板】基于51單片機(jī)簡易計算器數(shù)碼管顯示設(shè)計( proteus仿真+程序+實物演示+講解視頻) Proteus 仿真:Proteus 8.16(有低版本) 程序編譯器:keil 4/keil 5 編程語言:C語言 設(shè)計編號:P04 普中開發(fā)板實驗設(shè)計 本設(shè)計旨在設(shè)計一個基于51單片機(jī)的簡易計算器仿真設(shè)計。 功能要求

    2024年02月02日
    瀏覽(28)
  • 基于51單片機(jī)實現(xiàn)時間顯示及鬧鐘設(shè)置

    基于51單片機(jī)實現(xiàn)時間顯示及鬧鐘設(shè)置

    本次為大學(xué)中的一次創(chuàng)新實驗,當(dāng)時老師叫我自己拿個單片機(jī)去玩,為了趕時間就做了個簡單的時間顯示和鬧鐘設(shè)置,因為比較簡單所以也把代碼附上了。 1.單片機(jī) 單片機(jī)內(nèi)部內(nèi)部資源:Flash——程序存儲空間;RAM——數(shù)據(jù)存儲空間;SFR——特殊功能寄存器。51單片機(jī)指的是

    2024年02月07日
    瀏覽(23)
  • 51單片機(jī)基于時間片輪轉(zhuǎn)的簡單rtos

    早就想寫寫這個了,正好趕上有點時間,寫了一下基于51單片機(jī)的時間片輪轉(zhuǎn)調(diào)度系統(tǒng),簡單的rtos,呵呵。直接上代碼。 雖然簡單,也可以繼續(xù)學(xué)習(xí)了。

    2024年02月02日
    瀏覽(19)
  • 【51單片機(jī)】利用【時間延遲】的原理規(guī)避【按鍵抖動問題】

    【51單片機(jī)】利用【時間延遲】的原理規(guī)避【按鍵抖動問題】

    前言 大家好吖,歡迎來到 YY 滴單片機(jī)系列 ,熱烈歡迎! 本章主要內(nèi)容面向接觸過單片機(jī)的老鐵 本章是51LCD單片機(jī)設(shè)計的一個環(huán)節(jié),完整可前往相應(yīng)博客查看完整 傳送門 歡迎訂閱 YY 滴C++專欄!更多干貨持續(xù)更新!以下是傳送門! YY的《C++》專欄 YY的《C++11》專欄 YY的《Lin

    2024年02月20日
    瀏覽(21)
  • 基于51單片機(jī)交通燈帶緊急開關(guān)+黃燈倒計時+可調(diào)時間

    基于51單片機(jī)交通燈帶緊急開關(guān)+黃燈倒計時+可調(diào)時間

    仿真圖proteus 7.8 程序編譯器:keil 4/keil 5 編程語言:C語言 設(shè)計編號:J000 功能說明: 采用51單片機(jī)以及單片機(jī)最小系統(tǒng)和三極管驅(qū)動電路以及外圍的按鍵和數(shù)碼管顯示等部件,設(shè)計一個基于單片機(jī)的交通燈設(shè)計。 1.四路交通燈,帶有紅綠燈倒計時,綠燈倒計時結(jié)束后轉(zhuǎn)黃燈

    2024年02月06日
    瀏覽(23)
  • 定量分析計算51單片機(jī)復(fù)位電路工作原理 怎么計算單片機(jī)復(fù)位電容和電阻大小

    定量分析計算51單片機(jī)復(fù)位電路工作原理 怎么計算單片機(jī)復(fù)位電容和電阻大小

    下面畫出等效電路圖 ?可以知道單片機(jī)內(nèi)必然有一個電阻RX,為了簡化分析,我們假設(shè)他是線性電阻(不帶電容,電感的支路) 還有一個基礎(chǔ)知識: 電容器的充電放電曲線: 還需要知道電容電壓的變化是連續(xù)的,(高數(shù)知識)無法跳變。 一個很大的誤區(qū)就是認(rèn)為電容一上電

    2024年02月12日
    瀏覽(27)
  • 51單片機(jī)實驗三:數(shù)碼管顯示時鐘 按鍵調(diào)節(jié)時間時閃爍提示

    51單片機(jī)實驗三:數(shù)碼管顯示時鐘 按鍵調(diào)節(jié)時間時閃爍提示

    功能效果:1.時分秒的動態(tài)顯示。2.用三個按鍵實現(xiàn)時分秒的修改,調(diào)節(jié)的數(shù)字閃爍提示。 ?

    2024年02月11日
    瀏覽(31)
  • 【單片機(jī)】51單片機(jī)串口的收發(fā)實驗,串口程序

    【單片機(jī)】51單片機(jī)串口的收發(fā)實驗,串口程序

    這段代碼是使用C語言編寫的用于8051單片機(jī)的串口通信程序。它實現(xiàn)了以下功能: 引入必要的頭文件,包括reg52.h、intrins.h、string.h、stdio.h和stdlib.h。 定義了常量FSOC和BAUD,分別表示系統(tǒng)時鐘頻率和波特率。 定義了一個發(fā)送數(shù)據(jù)的函數(shù)send,該函數(shù)將數(shù)據(jù)發(fā)送到串口,等待數(shù)據(jù)

    2024年02月14日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包