導航:首頁 > 計算方法 > 單片機延遲10ms計算方法

單片機延遲10ms計算方法

發布時間:2022-07-03 04:12:21

『壹』 51單片機,晶振為6M請幫忙寫一個10ms的延時程序,能有詳細解釋的。因為我還不知道這個延時的時間是怎麼

延時有很多種方法,有一種是讓單片機去做無聊的循環,
還有一種是用定時器。
我本身也是菜鳥所以只能粗略的講一下。
第一種的演算法是
晶振的周期T1=1/f; 這里f=6MHz 所以T1=1/6 us;(微秒)
單片機花12個T1去執行一個指令,
所以一個機器周期等於12個晶振周期,
T2=12*T1=2us
10ms=1000 0us
所以你要得到10ms的延時就要想辦法讓機器去做5000條「無聊的指令」
所以
DEL: MOV R5,#05H
F1: MOV R6,#05H
F2: MOV R7,#32H
F3: DJNZ R7,F3
DJNZ R6,F2
DJNZ R5,F1
RET
這種方法是用於對時間要求不高的地方,我說的是其思想,程序中可能有錯的地方
用定時器的方法我不太會就不誤人了 (補充一下就是這個是用匯編寫的,你在主程序中用ACALL DEL調用就延時了。

『貳』 求助單片機軟體延時10ms的程序和計算方法(急)

程序如下.
ORG 0000H
SJMP START
ORG 0030H
START:
MOV TMOD, #01H ;T0定時方式1
MOV TH0, #0D8H ;10ms@12MHz
MOV TL0, #0F0H ;65536-10000=D8F0H
SETB TR0 ;啟動.

WAIT: ;下面使用查詢方式.
JNB TF0, WAIT ;沒有溢出就循環等待.
MOV TH0, #0D8H ;到了10ms,重新寫入初始值.
MOV TL0, #0F0H ;65536-10000=D8F0H
CLR TF0
;-----------------------------------------------
;在這里編寫 每到10ms 應該執行的指令.
CPL P1.0 ;可以使外接的LED閃光.
;-----------------------------------------------
SJMP WAIT ;繼續查詢.
END

『叄』 單片機的延時10ms是多長時間啊

延時多長時間要看你單片機的頻率和使用的語言種類,比如同一個延時程序,在8M晶振單片機跑就比在4M的快接近一倍,用匯編寫的延時就比用c的要准些,一般都用c寫,用不同軟體轉換相同延時程序時間也不同。由於軟體將你編的程序轉成匯編交給單片機識別,它所執行的時間為單片機一個周期*程序運行的條數

『肆』 誰能幫我解釋下這個單片機延時10ms的程序,延時時間是怎麼算出來的 12M的晶振

這只是大概十毫秒。根據單片機的晶振頻率來算的。比如你用的12M晶振,執行一條指令要三個機器周期,根據你循環了多少次,算出大概延時了多久。

『伍』 有關單片機延時程序的計算

這個根據單片機的晶振頻率來算的,你先看看晶振周期是多大,然後一個機器周期是多少個晶振,一個機器周期就是一條代碼執行的周期
51的指令周期是對晶振12分頻
如果晶振是12M
那麼執行一條一個機器周期的的指令就是1US
即1S/(12M/12分頻)
=1US
一個機器周期是12個時鍾周期

『陸』 單片機延時程序的計算

本程序的耗時計算如下:
1 + [1 + (1 + 1 + 2) * 249 + 2] * 5 + 2 = 4998 T
如果再算上主程序中的調用指令的2T,總共延時5000T。

如果時鍾頻率是6MHz,那麼正好延時10ms。

『柒』 pic單片機 實現10ms定時的簡單程序

這個可以用幾種辦法:
1、直接用軟體延時,如用以下的DELAY()延時子程序,如要延時5ms,直接調用DELAY(5)就好了,但這種是純軟體的延時。
//======延時(n)ms,在4MHz晶振下!!!
void DELAY(uint n)
{ uint j;
uchar k;
for (j=0;j<n;j++)
for (k=246;k>0;k--) NOP();
}

2、用定時器延時,要通過計算延時的時間來確定延時的常數(分頻比和定時器初值)。

『捌』 這是單片機的延時程序,晶振是12MHZ,延時10ms。請問是怎麼計算的其中,c=50。

不要試圖去計算,計算不準確,軟體延時本身都不準確,這些都是試驗得來的,如果晶振頻率不同,可以調整a=130,但想剛好是10ms基本無可能,用匯編語言延時准確一些,但計算也比較麻煩如果要准確延時的話,還要用定時器
假如b=38 時,剛好延時38ms的話,b=50延時不會剛好是50ms
同樣a=130 時,剛好延時13ms的話,a=150延時不會剛好是15ms
所以一般是按比例改變a b取值,然後根據模擬結果再去調整,誤差不大就可以了
還有unsigned char a, b和unsigned int a, b延時結果是不一樣的

『玖』 單片機延時時間怎樣計算

如果用循環語句實現的循環,沒法計算,但是可以通過軟體模擬看到具體時間,但是一般精精確延時是沒法用循環語句實現的。
如果想精確延時,一般需要用到定時器,延時時間與晶振有關系,單片機系統一般常選用11.059
2
mhz、12
mhz或6
mhz晶振。第一種更容易產生各種標準的波特率,後兩種的一個機器周期分別為1
μs和2
μs,便於精確延時。本程序中假設使用頻率為12
mhz的晶振。最長的延時時間可達216=65
536
μs。若定時器工作在方式2,則可實現極短時間的精確延時;如使用其他定時方式,則要考慮重裝定時初值的時間(重裝定時器初值佔用2個機器周期)。

『拾』 如何利用單片機匯編指令編程實現延時10ms利用匯編指令設計多重循環編程實現20ms延時

這是調用一個延時10毫秒的延時子程序 當然,子程序的名字可以自己定 DELY1MS: 這個名字一定要與調用中出現的名字一樣,否則的話,調用的就不是這個子程序了

DELAY10MS:
MOV R2,#20
DELAY10MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY10MS1
RET

這是調用一個延時20毫秒的延時子程序 當然,子程序的名字可以自己定 DELY1MS: 這個名字一定要與調用中出現的名字一樣,否則的話,調用的就不是這個子程序了

DELAY20MS:
MOV R2,#40
DELAY20MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY20MS1
RET

RETRET的作用是子程序返回。調用一個子程序,當單片機執行到RET語句的時候,單片機就會返回到調用的地方並繼續向下執行。

下面給你一個常式:

閃爍燈

ORG 00H

AJMP START

ORG 30H

START:

MOV P0,#00H

LCALL DELY;調用延時子程序

MOV P0,#0FFH

LCALL DELY;調用延時子程序

AJMP START

DELY:

MOV R7,#250

DL1:MOV R6,#250

DJNZ R6,$

DJNZ R7,DL1

RET

閱讀全文

與單片機延遲10ms計算方法相關的資料

熱點內容
馴服梁龍的最佳方法 瀏覽:52
鹵水製作方法視頻教程 瀏覽:50
手工艾條怎麼製作方法 瀏覽:45
爛桔子的正確使用方法 瀏覽:521
虎背熊腰的簡單方法 瀏覽:643
有哪些方法去痘印最快 瀏覽:631
乘法口訣速記方法圖片版 瀏覽:707
玉米和仙人掌的食用方法 瀏覽:967
手機種子下載方法 瀏覽:833
北京兒童多動症治療方法 瀏覽:719
快速畫圓的封口方法 瀏覽:677
手錶鋼化膜怎麼貼方法 瀏覽:471
機械盒子連接方法 瀏覽:554
如何在大學生活中獲益的方法 瀏覽:161
廚房鋼架安裝方法視頻 瀏覽:207
鑽石怎麼折立體方法圖解 瀏覽:308
6歲兒童專注力訓練方法 瀏覽:715
魅族鬧鍾設置在哪裡設置方法 瀏覽:585
道教改名快速轉運的方法 瀏覽:200
內存卡不夠怎麼辦用什麼方法 瀏覽:487