導航:首頁 > 操作系統 > 單片機燈延時函數

單片機燈延時函數

發布時間:2023-06-01 21:39:13

單片機中c編程的流水燈中關於延時~~~~

while(1)
{
delayms(250);
.......
.......
}調用延時函數給他傳遞一個250的參數、
當第一次執行時
ms=250,
執行250--時,此時執行:
for(i
=
0;
i
<
120;
i++);
直到i>=250時候才接下來執行
ms--(即249--);
也就是說
250每次自減
1
都要執行
120次
i++;
如果你把120
改成300
只是掃描時間變長了,也就是延時的更長了,可能第一個LED點亮時間比較長,影響了你的正常看現象。你等一段時間可能就會流動了。這個就是設置的問題。

Ⅱ 單片機LED延時原理問題

這個是延時程序,你通過keil編譯調試中,會看到其匯編代碼;

當帶入的參數=1時,你單步執行匯編代碼,直至 ret,然後你看看都執行了哪些指令,並把所消耗的指令周期累加起來,大致就10個機器周期,而當單片機晶振為12MHz時,則一個機器周期約為 1uS,那麼就是從進入這個延時程序到返回,所經歷的時間正好是10uS;

Ⅲ 單片機LED燈閃爍延遲程序

int main(void)
{
while(1)
{

D3=0;
yanshi();
D3=1;
yanshi();
}
}
注意單片機程序是從main函數開始執行的,注意單片機主函數內部不加while大循環,程序會一直往下執行,直到RAM溢出產生錯誤為止程序將跑飛,所以主程序內部一定要加大循環,上面的格式是經過無數工程師的驗證,主函數的書寫格式。

Ⅳ 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

Ⅳ 單片機流水燈C語言程序(8個燈,依次點亮每個燈,延時500MS)

單片機流水燈C語言程序的源代碼如下:

#include //51系列單片機定義文件

#define uchar unsigned char //定義無符號字元

#define uint unsigned int //定義無符號整數

void delay(uint); //聲明延時函數

void main(void)

{

uint i;

uchar temp;

while(1)

{

temp=0x01;

for(i=0;i<8;i++) //8個流水燈逐個閃動

{

P1=~temp;

delay(100); //調用延時函數

temp<<=1;

}

temp=0x80;

for(i=0;i<8;i++) //8個流水燈反向逐個閃動

{

P1=~temp;

delay(100); //調用延時函數

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++) //8個流水燈依次全部點亮

{

P1=temp;

delay(100); //調用延時函數

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++) //8個流水燈依次反向全部點亮

{

P1=temp;

delay(100); //調用延時函數

temp>>=1;

}

void delay(uint t) //定義延時函數

{

register uint bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

(5)單片機燈延時函數擴展閱讀

51單片機流水燈的源代碼如下

#include<reg51.h>

#include<intrins.h>

voiddelay(inta)

{

inti;

while(a--)for(i=0;i<110;i++);

}

main()

{

inti;

while(1)

{

P0=0xfe;

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

{

P0=_crol_(P0,1);

delay(500);

}

}

}

Ⅵ 51單片機 延時函數

delay(u16i)
{
while(i--);//這里就是當i減1不為0時一直做減1運算,知道i為0跳出循環。
}
想當於:
delay(u16i)
{
while(i--)
{
;
}
}

Ⅶ 單片機C語言編程關於延時函數

單片機的C語言關於延時函數主要有兩種
一種是用for循環,通過單片機執行空指令達到延時的目的
如:
for(i=0;i<100;i++)
{
;
}
這個簡單的語句會執行100次空指令
每一次指令的時間可以大概確定
因此這個是最簡單的延時函數
第二種是通過定時器的方式來實現
定時器是通過對單片機的晶振進行計數
然後在定時器中斷服務函數裡面實現定時時間的計算及設置
51單片機的定時器0中斷服務函數為
void
time0()
interrupt
1
{
...
}

閱讀全文

與單片機燈延時函數相關的資料

熱點內容
雲伺服器宕機概率 瀏覽:227
在線買葯用什麼app知乎 瀏覽:810
ubuntu解壓xz文件 瀏覽:674
宏傑加密時電腦關機 瀏覽:388
自己寫單片機編譯器 瀏覽:598
單片機按鍵閃爍 瀏覽:380
為什麼icloud總是顯連接伺服器失敗 瀏覽:888
如何設置域控伺服器 瀏覽:738
想在上海租房子什麼app好 瀏覽:184
編譯程序各部分是必不可少的嗎 瀏覽:885
編程不超過十行 瀏覽:763
數電編譯器的作用 瀏覽:337
時間演算法與現在有什麼區別 瀏覽:163
7zip解壓後沒文件夾 瀏覽:903
為什麼安卓送玫瑰ios收不到 瀏覽:8
美篇文章加密是什麼意思 瀏覽:82
ilasm編譯dll 瀏覽:39
呼吸燈單片機程序 瀏覽:954
linux域socket 瀏覽:250
qq分身怎麼樣才能加密 瀏覽:457