『壹』 單片機延時時間程序怎麼編程
舉一個例子來說明吧.比如你要編一個延時50毫秒的子程序,那麼步驟如下:
1、查看一下你的硬體環境,比如晶振大小,CPU型號,不用CPU指令的機器周期是不一樣的。
2、計算延時需要的機器周期。比如採用12M晶振,CPU採用通用8051,那麼一個機器周期為1US,50毫秒為50*1000=50000US,需要的機器周期=50000/1=50000。
3、試編程,如下:
程序代碼 指令時間 總共時間
DELAY50MS: ;2 2
MOV R7,#A ;1 1
DELAY1:
MOV R6,#B ;1 1*A
DJNZ R6,$ ;2 2*B*A
DJNZ R7,DELAY1 ;2 2*A
RET ;2 2
所以總時間=2+1+A+2*A*B+2*A+2=5+3A+2AB
4、湊數求A、B
根據2、3得到如下式子:
50000=5+3A+2AB
可以有很多種結果,不過最好是以A盡可能小,B盡可能大為原則,當然不能大於255.
我現在湊出A=110,B=225;那麼總延時時間=5+3*110+2*110*225=49835。還差165US
5、補齊不夠時間
再加一個小循環就OK了,呵呵如下:
MOV R6,#C
DJNZ R6,$
會算了吧,2*C+1=165;所以C=82。
現在完整的延時程序出來了,如下:
DELAY50MS: ;2 2
MOV R7,#110 ;1 1
DELAY1:
MOV R6,#225 ;1 1*110
DJNZ R6,$ ;2 2*225*110
DJNZ R7,DELAY1 ;2 2*110
MOV R6,#82 ;1 1
DJNZ R6,$ ;2 2*82
RET ;2 2
很圓滿:總的時間50000微妙,也就是50毫秒。這種方式編程,在該硬體環境下可以保證最大誤差為1微妙。
『貳』 台達PLC中延時器的時間是如何計算的
一般的是100ms基時,延時時間=設定時間*基時。
例如TMR T0 K123的延時時間就是123*100ms=12300ms=12.3s。
當M1028為10ms時間切換標志信號,Off時定時器T64~T126的時基為100ms,若為On時則時基改為10ms。
『叄』 51單片機延時程序時間是怎麼計算的
最長的延時時間可達216=65536μs、12mhz或6mhz晶振.0592mhz。第一種更容易產生各種標準的波特回率:吳鑒鷹單片機答開發板(視頻教程詳細,則要考慮重裝定時初值的時間(重裝定時器初值佔用2個機器周期),後兩種的一個機器周期分別為1μs和2μs。參考資料來源,延時時間與晶振有關系。本程序中假設使用頻率為12mhz的晶振。若定時器工作在方式2,則可實現極短時間的精確延時,但是可以通過軟體模擬看到具體時間:吳鑒鷹吧貢獻文檔:網路文庫《吳鑒鷹單片機項目實戰精講》單片機開發板參考,資源豐富,便於精確延時,沒法計算。如果想精確延時,單片機系統一般常選用11,一般需要用到定時器;如使用其他定時方式如果用循環語句實現的循環,但是一般精精確延時是沒法用循環語句實現的
『肆』 51單片機使用匯編語言循環延遲時間怎麼算
舉例來說明吧:
delay:
mov r0,#10 ;1
delay1:
mov r1,#100 ;1*10
djnz r1,$ ;2*100*10
djnz r0,delay1 ;2*10
ret ;2
total=1+1*10+2*100*10+2*10+2=2033
time=total*1/(focse/12)
總結:
第一步:在延時程序沒行後邊標注該指令執行的機器周期
第二步:在機器周期後邊乘以該指令循環的次數
第三步:計算總共用的機器周期數
第四步:計算總延時時間。
『伍』 C語言delay延時時間怎麼算,說的詳細點謝謝
DelayMS(300)表示希望系統delay 300毫秒,系統有自己的RTC,根據硬體的晶振(Hz)可以計算出一次振盪大約多少耗時,這拍改樣就能大約算出1ms需要多少次振盪;
簡單比喻一次振盪需要1us,那1ms就是1000次振盪,300ms就是300x1000次振盪,這樣就能大概的計算出300ms delay;
這得看你的CPU運行一條指令得多久,像單片機89C51一般一條1us。