❶ AVR單片機毫秒和微秒延時程序為什麼不同
在這兩個函數參數的類型沒多大關系的(延時us用Int可能是因為us到ms是1000就足夠了,延時ms用uint可以在調用一次該函數時的最大延時時間能更久點)
用while(time!=0)的意思是在循環中time--後time等於0 時退出循環(用什麼請根據時鍾來決定,你也可以用time>1啊,但延時的時間可能沒while(time!=0)更接近需要延時ms的時間,實際和單片機的時鍾有關)
❷ 51單片機計時60毫秒怎麼算呀,計數周期是啥意思呀
一般51單片機的晶振頻率是fosc=12M,單片機內部計時的頻率是fosc/12 即1MHZ
因此計數周期1us
內部定時器是16位,最多 計脈沖數為65536個,因此最長定時時間是65.536 ms
要定時60 ms,需經過的脈沖個數是60000個,由於51單片機的定時器是加法計數,因此初值應該寫入(65536-60000)
這樣經過60mS後,計數器的值就是 (65536-60000)+60000=65536,剛好溢出,溢出標志位TF置1或產生中斷
定時器初值又分高8位和低8位,高8位的1代表256,因此高8位是256的倍數,低8位是256的余數
因此 C語言編程就這樣 寫:
TH0=(65536-60000)/256
TL0=(65536-60000)%256
❸ 單片機中125ms是什麼意思
就是時間
125毫秒,一秒等於1000毫秒,
對的
delay中的for循環為什麼循環tick加1次
,delay中的for循環應該是從0到始的,所以到tick,就多了一次
這個如果你是自己做的硬體板,晶振的頻率要保證穩定準確,使然時鍾的頻率比較高。輕微的頻偏影響不大,不過要求精確的時候表現還是很明顯的
❹ 單片機的延時10ms是多長時間啊
延時多長時間要看你單片機的頻率和使用的語言種類,比如同一個延時程序,在8M晶振單片機跑就比在4M的快接近一倍,用匯編寫的延時就比用c的要准些,一般都用c寫,用不同軟體轉換相同延時程序時間也不同。由於軟體將你編的程序轉成匯編交給單片機識別,它所執行的時間為單片機一個周期*程序運行的條數
❺ 好單片機能毫秒級響應嗎
毫秒級響應?一般的單片機的指令周期都是微秒級的。如PIC系列單片機,晶振為4M,單指令周期為1微秒,幾個微秒,就是查詢狀態,就能得到相應。毫秒級,單片機可經過運算,比較,判定,能做的事多了。頻率高的單片機品種很多的。
❻ 51單片機中用定時器定時1毫秒,怎麼編寫
假設晶振為12MHz,不用中斷時程序語句如下:
TMOD=0x01;//定時器0工作方式1
TH0=(65536-1000)/256;//裝入初值
TL0=(65536-1000)%256;
TF0=0;//清溢出標志;
TR0=1;//啟動定時器0
while(TF0==0);//等待定時時間到
TR0=0;
TF0=0;
❼ 單片機中延時100毫秒的程序
汗!問這個問題說明你對時鍾周期、機器周期、定時器周期都不太了解吧。
延時100毫秒的程序可以是一個函數,也可以是利用定時器的一段代碼。
如果是用匯編延時那麼你要把單片機指令周期表翻一下了,看看整個循環語句用了哪些指令,每個指令多少個機器周期,然後計算每個機器周期耗時多少時長,你就知道循環多少次了。
如果用C語言延時,那麼就要藉助儀器了,你同樣要估算一下機器周期和循環次數,然後要精確到100ms就需要把這個延時時間作為頻率從單片機IO口輸出,用儀器來輔助測量,最後得出叫准確的100ms的循環次數的值。
如:
void delay_100ms(uint8 n)
{
uint16 i;
while(n)
{
for(i=0;i<xxx;i++)//此循環應為運行100ms,用儀器輔助得到xxx的值。不夠就再在FOR一次。
}
}
❽ 單片機中的392毫秒的延時是如何實現的
不要求精確的話編一個ms延時函數,調用時參數取394即可,若要求精確定時,則要用單片機內部定時器1ms中斷一次,中斷394次即是394mS