當前位置:首頁 » 編程語言 » 單片機c語言帶延遲
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

單片機c語言帶延遲

發布時間: 2022-09-26 01:03:16

⑴ 單片機c語言延遲程序

下面的延時的基本程序(中斷加計數器)
********
void
T0_int(void)
interrupt
1
{

TH0
=
0x4C;
//重新裝載,50MS定時器初值

TL0
=
0x00;

T0_count++;

if(T0_count==20)
//1S到

{

T0_count
=
0;

//在這寫程序

}
}
main()
{

TMOD
=
0x01;//定時器0,工作方式1,16位計數

TH0
=
0x4C;
//50MS定時器初值

TL0
=
0x00;

IE
=
0x82;
//開總中斷,開T0中斷

EA
=
1;

ET0
=
1;

TR0
=
1;

T0_count
=
0;

i
=
0;
loop:

goto
loop;
}
還有:
for(us=0;us<60;us++);
/*延時500us*/
for(us=0;us<1;us++);
/*
延時15微秒*/
for(us=0;us<5;us++);
/*
延時51微秒*/

⑵ 單片機c語言帶參數延時怎麼寫

在循環里判斷是否滿足跳出的條件,滿足則跳出循環,不滿足就繼續延時直到延時結束。
具體的條件要有程序的要求來,比如說某個io口的電平的狀態。
sbit
state=p1^7;
delay(uint)
{
uint
x,y;
for(x=1000;x>0;x--)
for(y=1200;y>0;y--)
{
if(state==1)
return
;//當p1.7口為高時跳出循環
}
}
//由於加入了一條語句,延時要重新計算

⑶ 單片機c語言的延時程序500ms

一般單片機在c語言中很難得到精確的延時,所以一般對時間要求高的都用計時器中斷來做了。如果時間要求不嚴格可以用for循環來做,你可以實際測試一下,把時間延時到大概一秒左右,然後燒進單片機里運行,比如一個燈亮燈滅的程序,看著燈計數,同時用秒錶計時,幾個幾十次後取平均值就能知道大概時間了。

⑷ 51單片機C語言程序中延時函數delay的原理是什麼

原理:只是執行一些所謂的「無實際意義的指令」,如縮放或執行一個int自加,簡單地說,就像高中數學中的「乘法原理」一樣,很容易迅速增加上面提到的「無意義指令」的數量

關於大小的值:如果是在C語言中,該值不僅與水晶振動、單片機本身的速度,但也與C的編譯器,所以,雖然這個值可以精確計算,但大多數情況下,程序員是經驗值。

當然,如果你在匯編中編程,情況就不同了,因為每條指令使用一定數量的機器周期,你當然可以根據所有指令使用的總時間來計算特定延遲的總時間。

(4)單片機c語言帶延遲擴展閱讀:

定義延遲XMS毫秒的延遲函數

Voiddelay(unsignedintXMS)//XMS表示需要延遲的毫秒數

無符號intx,y;

For(x=XMS;X0;X-)

For(y=110;Y」0;Y-);

使用:

VoidDelay10us(ucharMs)

Uchar數據我;

(;女士「0;------Ms)

對於(I = 26)我> 0;我-);

I=[(延遲值-1.75)*12/ms-15]/4

⑸ 求指教單片機c語言延時程序

單片機里沒有萬用的延時函數吧,最簡單的
for(i=0;i<100;i++);這就是一個能延時的for循環(注意最後的分號),
要明白延時的原理,就讓單片機一直做一件事,如上邊的就是一直執行這個語句直到i=99,

只要明白這個,其他的延時就不難啦,可以使用循環嵌套實現更長的延時,不僅僅可以使用for語句,while語句也同樣可以

⑹ 51單片機用c語言怎麼寫延時函數

延時時間的計算與單片機的晶振頻率有關。若晶振頻率為12Mhz,那麼單片機每震動一次所需要的時間是1/12M s。那麼再來看看單片機執行一次自減所需要的振動次數是96次,假如我們對時間要求不是特別精確的話,可以約等於100來計算。現在通過上面兩個數據可以得出:單片機每執行一次自減所需要的時間是1/12M *100(s),即1/120000 s,逆向計算一下,每1ms需要自減多少次?120次對吧。所以一個簡單的延時功能就誕生了,我們只需要自減120次,就可以延時1ms,如果我們要延時50ms呢,那就自減50*120=6000次。那麼在程序上如何表達呢?我們可以用兩套for循環
void delay(int i){
int x,y;
for(x=i;x>0;x--){
for(y=120;y>0;y--)
}
}
參數 i 代表該函數延時多少ms

⑺ 51單片機C語言中delay函數是怎麼定義和使用的

delay函數是一般自己定義的一個延時函數。
c語言定義延時函數主要通過無意義指令的執行來達到延時的目的。下面給出一個經典的延時函數。
// 定義一個延時xms毫秒的延時函數
void delay(unsigned int xms) // xms代表需要延時的毫秒數
{
unsigned int x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}

⑻ 單片機c語言帶參數延時怎麼寫

12MHz的晶振,一個機器周期是1uS.

voidDelay_ms(unsignedchari,unsignedcharj) //@12.000MHz
{
unsignedcharn=0;
unsignedcharm=0;
for(n=0;n<i;n++)
for(m=0;m<j;m++);
}


然後調用:

Delay_ms(117, 184);//Delay 20 mS

117 × 184 = 21528, 約等於 20mS.

這樣很不準確,實際計算指令周期的話,接近了40mS

下面這中方法能准確一些:

voidDelay_ms(ucharcount)
{
uchari,j,k;
for(k=count;k>0;k--)
for(i=5;i>0;i--)
for(j=98;j>0;j--);
}

⑼ 51單片機c語言延時函數 Void delay 1ms(unsigned int ms){un

C程序中可使用不同類型的變數來進行延時設計。經實驗測試,使用unsigned char類型具有比unsigned int更優化的代碼,在使用時應該使用unsigned char作為延時變數。 以某晶振為12MHz的單片機為例,晶振為12MHz即一個機器周期為1us。

void delay_ms(unsigned int ms_number) // ms延時函數 (AT89C51 @ 11.0592MHz)

{

unsigned int i;

unsigned char j;

for(i=0;i<ms;i++)

{

for(j=0;j<200;j++);

for(j=0;j<102;j++);

}

}

void Delay()

{

unsigned char a,b,c;

for(a=0;a<?;a++)

for(b=0;b<?;b++)

for(c=0;c<?;c++);

}

void delay_ms(unsigned int ms)

{

unsigned int i;

unsigned char j;

for(i=0;i<ms;i++)

{

for(j=0;j<200;j++);

for(j=0;j<102;j++);

}

}

拓展資料

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。