51單片機100延時函數?可靠高效實現方法

今天給各位分享51單片機100延時函數?可靠高效實現方法的知識,其中也會對51單片機延時1ms進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧! 文...
今天給各位分享51單片機100延時函數?可靠高效實現方法的知識,其中也會對51單片機延時1ms進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!
文章目錄:
51單片機用c語言延時函數?
void delayus2x(char n)//延時nx2 us { while(--n);} void delayms(unsigned int t)//延時 t x 1ms { while(t--){ delayus2x(245);delayux2x(245);} } delayms(50000);//調用此句延時5s 至于不能大于255,因為你的數據類型為char型,及8字節,最大值為255,2的8次方減一。
C程序中可使用不同類型的變量來進行延時設計。經實驗測試,使用unsigned char類型具有比unsigned int更優化的代碼,在使用時應該使用unsigned char作為延時變量。 以某晶振為12MHz的單片機為例,晶振為12MHz即一個機器周期為1us。
幾個精確延時程序:在精確延時的計算當中,最容易讓人忽略的是計算循環外的那部分延時,在對時間要求不高的場合,這部分對程序不會造成影響。500ms延時子程序程序:(晶振12MHz,一個機器周期1us。
delay函數是一般自己定義的一個延時函數。C語言定義延時函數主要通過無意義指令的來達到延時的目的。下面給出一個經典的延時函數。
如果用C51來編寫延時程序,一般都用循環語句:例:void delay(unsigned int num){ unsigned int i;for (i=0; inum; i++){ ; // 程序什么都不做 } } 原理很簡單,程序什么都不做,只是不段的比較,直到比較完,這樣就起到延時的作用了。
單片機中延時100毫秒的程序
1、void delay_100ms(uint8 n){ uint16 i;while(n){ for(i=0;ixxx;i++)//此循環應為運行100ms,用儀器輔助得到xxx的值。不夠就再在FOR一次。
2、晶振為12M,說明一個機器周期為1微秒,100毫秒就是100 000個機器周期。mov r7,#X;3周期 loop:mov r6,#Y;3X周期 djnz r6,$;2XY周期 djnz r7,loop;2X周期 也就是3+5x+2xy=100 000。可取x=194,y=255。此時共延時99 913,即9913毫秒。
3、流程:點亮1個燈;延時100毫秒 滅第一個燈,點亮第二個燈;4延時100毫秒;。。依次類推,直到滅第8個燈,再返回到1,重新開始。
4、在delayms();函數后,i=xms即i=10,然后做for循環,根據的時鐘周期做出相應時間的延時。如果沒有xms,你的延時函數只能寫成固定延時的,即在delayms內部確定好i的值,很不方便。有了參數,就能像上面說的那樣隨意延時了(數值范圍要在uint定義內,即小于65536)。
5、分鐘數加1 cond = 0;minute++;} if (minute == 60) { // 分鐘數到達60分,小時數加1 minute = 0;hour++;} delay(100); // 延時100毫秒,控制顯示刷新速度和計時精度 } } ```以上代碼僅供參考,實際應用中需要根據具體情況進行修改和調整。ai.aimpcapbp.top可以給你解憂。
6、計算延時需要的機器周期。比如采用12M晶振,CPU采用通用8051,那么一個機器周期為1US,50毫秒為50*1000=50000US,需要的機器周期=50000/1=50000。
51單片機中怎么得到精確延時?
1、單片機的幾種精確延時實現延時通常有兩種方法:一種是硬件延時,要用到定時器/計數器,這種方法可以提高CPU的工作效率,也能做到精確延時;另一種是延時,這種方法主要采用循環體進行。1 使用定時器/計數器實現精確延時 單片機一般常選用1059 2 MHz、12 MHz或6 MHz晶振。
2、幾個精確延時程序:在精確延時的計算當中,最容易讓人忽略的是計算循環外的那部分延時,在對時間要求不高的場合,這部分對程序不會造成影響。500ms延時子程序程序:(晶振12MHz,一個機器周期1us。
3、單片機的精確延時主要取決于兩個方面:時鐘的準確性和穩定性。(晶振或晶體或內部振蕩或其他外部時鐘源)單片機延時的實現方法。一不做討論,但顯然與精度密切相關。要求精確的延時時間越長,當然誤差越大。假設時鐘與標稱值的系數為x,延時誤差是下面分析誤差的x倍。
51單片機的延遲函數,時間是怎么計算的,求大神解答
1、通過計算每條指令的時間和次數,得到每條指令的總運行時間,在吧所有指令的時間相加,人工算的話停麻煩的,一般都是用算的,例如 單片機精靈 stc-isp 等。
2、第一步:在延時程序沒行后邊標注該指令的機器周期第二步:在機器周期后邊乘以該指令循環的次數第三步:計算總共用的機器周期數第四步:計算總延時時間。
3、延時時間的計算與單片機的晶振頻率有關。若晶振頻率為12Mhz,那么單片機每震動一次所需要的時間是1/12M s。那么再來看看單片機一次自減所需要的振動次數是96次,假如我們對時間要求不是特別精確的話,可以約等于100來計算。
如果你還想了解更多這方面的信息,記得收藏關注本站。
本文鏈接:http://www.resource-tj.com/bian/226347.html