两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

延時是單片機入門必學(xué)的應(yīng)用!

1.序

上一講我們已經(jīng)實現(xiàn)點亮一盞燈,但是很多時候程序的執(zhí)行都是要死循環(huán)的,不能讓程序像是停在那里不執(zhí)行了。所以這一講在前面的原理圖基礎(chǔ)上實現(xiàn)讓LED2從點亮一段時間到熄滅一段時間再點亮一段時間如此循環(huán)下去,實現(xiàn)閃爍LED2的功能。


2.代碼普及

我們知道CPU執(zhí)行一條語句是很快的,如果我們這樣寫程序來實現(xiàn)燈的閃爍:

#include <reg52.h> 
sbit LED2  = P0^0;
sbit ADDR2 = P1^2;
sbit ADDR1 = P1^1;
sbit ADDR0 = P1^0;
sbit ENLED = P1^4;
sbit ADDR3 = P1^3;
   
void main()
{  
    ADDR3 = 1;//使能三八譯碼器
    ENLED = 0;// 

    ADDR2 = 1;//**************************
    ADDR1 = 1;//讓三八譯碼器的IO6輸出低電平
    ADDR0 = 0;//**************************

    while (1)
    {
        LED2=0;//點亮最右端的燈
        LED2=1;//熄滅最右端的燈
    }
}

那我們看到的現(xiàn)象就是燈一直亮著,不會閃爍。原因就是執(zhí)行“LED2=0;”把燈點亮之后執(zhí)行“LED2=1;”去熄滅,但是這個熄滅語句只持續(xù)一瞬間就循環(huán)又開始執(zhí)行“LED2=0;”了,熄滅狀態(tài)的持續(xù)時間太短我們?nèi)搜垡簿陀^察不到閃爍的現(xiàn)象。

 

3.延時語句

要想實現(xiàn)LED2閃爍,必須讓LED2被點亮持續(xù)一段時間,被熄滅持續(xù)一段時間,也就是IO端口保持低電平一段時間,接著跳變保持高電平一段時間,此時我們需要用上延時。

#include <reg52.h> 
sbit LED2  = P0^0;
sbit ADDR2 = P1^2;
sbit ADDR1 = P1^1;
sbit ADDR0 = P1^0;
sbit ENLED = P1^4;
sbit ADDR3 = P1^3;
  
void main()
{  
    unsigned int i;//定義一個16位無符號整形變量  
    ADDR3 = 1;//使能三八譯碼器
    ENLED = 0;// 
   
    ADDR2 = 1;//**************************
    ADDR1 = 1;//讓三八譯碼器的IO6輸出低電平
    ADDR0 = 0;//**************************
   
    while (1)
    {
        LED2=0;//點亮最右端的燈
        for(i=0;i<30000;i++);//延時一段時間
        LED2=1;//熄滅最右端的燈
        for(i=0;i<30000;i++);//延時一段時間
    }
}

“for(i=0;i<30000;i++);”其實就是CPU空運行讓i不斷相加到30000之后不滿足“i<30000”的判斷條件就結(jié)束這條運行代碼,接著去執(zhí)行下一條語句了,通過占用CPU的執(zhí)行時間來達(dá)到短暫的電平保持狀態(tài),也就能讓LED2亮一小段時間,接著又滅一小段時間,這樣LED2在while(1)的死循環(huán)下就實現(xiàn)不停循環(huán)的亮滅閃爍了。


4.補充

對剛?cè)腴T單片機編程的初學(xué)者來說,以前我們C語言基礎(chǔ)上機操作的時候都是只見過別人int,char的去定義變量,而在單片機入門編程中看到的都是unsigned int,unsigned char這樣定義,原因是單片機在入門的時候用的變量的取值都是0和正整數(shù)(正整數(shù)不包括0),所以才會用unsigned去定義無符號整形變量。

點贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:

一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運行等待時間)