本文目錄一覽:
- 1、單片機,C語言寫的一小段程序,高手幫看看
- 2、設單片機的晶振頻率為6MHZ編寫一段延時程序約延時100ms的子程序
- 3、單片機中延時100毫秒的程序
- 4、用for循環 和while 循環分別完成延時100毫秒的延時函數 假設晶振為12m
- 5、用C語言編寫一段循環100次的延時程序。
單片機,C語言寫的一小段程序,高手幫看看
這是一個簡單的流水燈實驗,前面的void
delay(uint)是一個函數申明,你這一段裡面沒有給delay函數,給的程序不夠清晰。
如果是延遲100ms的話,delay函數應該是這樣的:
void
delay(unsigned
int
x)
{
unsigned
int
i,j;
for(
i
=0;i
x;i++
)
{
for(
j
=0;j3;j++
);
}
}
給定delay(100)即延遲100ms。
設單片機的晶振頻率為6MHZ編寫一段延時程序約延時100ms的子程序
機器周期=12/6MHz=2μs
定時100ms的計數值 =100ms/2μs =50000
設T1工作於方式1(16位計數器)
計數初值 =2^16 -50000=65536=15536=3CB0H
MOV TMOD,#10H ;; T1工作方式1、定時模式
MOV TH1,#3CH ;; 寫入計數初值高8位
MOV TL1,#B0H ;; 寫入計數初值低8位
SETB TR1 ;; 啟動T1,開始計時
SETB ET1 ;; 允許T中斷
SETB EA ;; CPU開中斷
SJMP $ ; ; 等待T1計時溢出中斷
單片機中延時100毫秒的程序
汗!問這個問題說明你對時鐘周期、機器周期、定時器周期都不太了解吧。
延時100毫秒的程序可以是一個函數,也可以是利用定時器的一段代碼。
如果是用彙編延時那麼你要把單片機指令周期表翻一下了,看看整個循環語句用了哪些指令,每個指令多少個機器周期,然後計算每個機器周期耗時多少時長,你就知道循環多少次了。
如果用C語言延時,那麼就要藉助儀器了,你同樣要估算一下機器周期和循環次數,然後要精確到100ms就需要把這個延時時間作為頻率從單片機IO口輸出,用儀器來輔助測量,最後得出叫準確的100ms的循環次數的值。
如:
void delay_100ms(uint8 n)
{
uint16 i;
while(n)
{
for(i=0;ixxx;i++)//此循環應為運行100ms,用儀器輔助得到xxx的值。不夠就再在FOR一次。
}
}
用for循環 和while 循環分別完成延時100毫秒的延時函數 假設晶振為12m
最好直接利用定時器延時,定時1毫秒,程序中調用延時函數就行了,Delay(100): uint count; //定義外部變量 Delay( uint k) // 延時函數 { count = k; while(count!=0) ; } TIME0() interrupt 1 // 定時器0中斷函數 { TH0 = 0XFC; TL0 = 0X18; count–; }
用C語言編寫一段循環100次的延時程序。
#include stdio.h
int main()
{
int i;
for(i=0;i100;i++);
return 0;
}
哈 你想多了把
額,你如果是說sleep那種形式的延時,可以在頭上加#include windows.h
然後
#include stdio.h
#include windows.h
int main()
{
int i,a=(1000);
for(i=0;i100;i++)
{
sleep(a);
}
return 0;
}
想看一下延時效果的話,可以這樣:
#include stdio.h
#include windows.h
int main()
{
int i,a=(1000);
for(i=0;i100;i++)
{
sleep(a);
printf(“%d\n”,i);
}
return 0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/280882.html