|
這個是根據(jù)“at89c51 單片機(jī) 匯編 實驗 教程 劉健老師”的嗶哩嗶哩視頻教程整理的,敲了一邊。
希望對和我一樣的初學(xué)者有用。
延時程序精確分析過程
在單片機(jī)的控制應(yīng)用中,常有延時的需要,CPU過一段時間再去作某件事情,稱之為延時。延時有兩種方法,即軟件延時和硬件延時.硬件延時是通過定時/計數(shù)器來實現(xiàn)的,這種方法不占用CPU 的工作時間。軟件延時一般采用循環(huán)程序,通過CPU執(zhí)行具有固定延遲時間的循環(huán)體來實現(xiàn)的。
延時程序的延時時間主要與兩個因素有關(guān),一是所用晶振,二是延時程序中的循環(huán)次數(shù),一旦晶振確定之后,則主要是如何設(shè)計與計算需給定的延時循環(huán)次數(shù)。
設(shè)單片機(jī)的晶振頻率為6MHz,則一機(jī)器周期為2us;
設(shè)單片機(jī)的晶振頻率為12MHz,則一機(jī)器周期為1us;
匯編語言常用延時程序所用到的指令
指令 占用的機(jī)器周期數(shù)
MOV Rn,#Data 1
DJNZ Rn,Rel 2
RET 2
NOP 1
ACALL Addr11 2
LCALL Addr16 2
ADD A,Ri 1
INC DPTR 2
基本延時程序模式及延時時間的計算
分以下幾種情況:
1、單循環(huán)延時程序
DEL2: MOV RO,#X ; 1 周期
DEL1: DJNZ RO,DEL1 ; 2周期
RET ; 2周期
延時時間=2*X*T+1*T+2*T=(2X+3)T
整個程序的延時時間范圍:
以晶振頻率6MHz 為例:10us<=t<=1030us
以晶振頻率12MHz為例:5us<=t<=515us
延時時間的范圍的計算
設(shè)X 是裝入寄存器R0的時間常數(shù),R0是8位寄存器(以下的 R1、R2、R 均為 8 位),因為 0<=R0<=255,R0=0,延時時間最長,R0=1,延時時間最短。當(dāng) Ri=0時,由匯編語言的特征知其將從零開始判斷,共256次,所以應(yīng)在公式中代入256,因此這個程序的最長定時時間為1030us。
51hei.jpg (149.48 KB, 下載次數(shù): 64)
下載附件
2021-12-18 01:08 上傳
完整的pdf格式文檔51黑下載地址(共140頁):
51單片機(jī) 匯編.pdf
(11.9 MB, 下載次數(shù): 31)
2021-12-17 23:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|