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

1.單片機內(nèi)部資源

大家看到下面這張圖片應該不算陌生了

寄存器1

可是如果我們看到的是這張的話就會覺得陌生

寄存器2

像我們所熟知的P0,P1,P2,P3,包括上圖的TCON以及“#include<reg52.h>”頭文件中的IE,SCON等等都叫做寄存器。這些寄存器我們粗淺的認為就是一個8位的變量,其中像P0^0這個最低位就是控制單片機的外部IO端口輸出高低電平。

而像TOCN^1(也就是IE0)這些有什么作用呢?

后面我們就要開始學習單片機內(nèi)部的資源了。


2.IE0的作用

大家還記得原理圖的P3端口標出的這些嗎

P3端口圖

而P3寄存器的每一位都在“#include<reg52.h>”頭文件中聲明好了(本篇開頭的第一張圖那里)。

我們先拿P3.2來說,如果這個IO端口被外部電路拉低,那么TCON的第1位(也就是TOCN^1)就會被置1,在程序中IE0變?yōu)?。

這樣吧,我們用一根杜邦線的一頭插入P3.2的引腳,然后另一頭插入如下圖所示GND的地方

GND


接著把下面的代碼下載進開發(fā)板看看有什么現(xiàn)象

#include <reg52.h> 
#include <function.h>//詳見第六章第8講

//請?zhí)崆皩3.2和GND用杜邦線連接起來
void main()
{  
    LED_Init();//初始化LED硬件模塊
    
    while(1)
    {   
        if(IE0==0)
        {
            LED2=!LED2;  
            delay_ms(50);
            LED2=1;  //如果IE0不等于0了,要保證熄滅LED2
        }    
        if(IE0==1)
        {
            LED9=!LED9;  
            delay_ms(50);
            LED9=1;  //如果IE0不等于1了,要保證熄滅LED9
        }    
        delay_ms(50);//總要執(zhí)行 “if(IE0==0)”或者“if(IE0==1)”,這個延時是保持其中一盞燈滅的時間,保證了總有燈閃爍的現(xiàn)象    
    }
}

我們看到LED9在不停閃爍,此時拔了連接GND那頭的杜邦線看到LED9熄滅,LED2不停閃爍,連著拔插幾次觀察現(xiàn)象就可以得出,當P3.2遇到低電平的時候IE0會一直等于1,只有P3.2為高電平時IE0才會等于0。


3.IT0的作用

再看到TCON^0(也就是IT0),我們把上面的代碼中的“IE0”改為“IT0”測試IT0的初始值是多少。

經(jīng)測試,IT0初始值為0。

若是我們在主函數(shù)開頭賦值給IT0為1,那么IE0只有當P3.2從高電平變成低電平(俗稱下降沿)就會被置1,即使P3.2后面變成高電平 IE0也不會變?yōu)?,一直是1。

P3.2電平高低變化圖

這時需要我們在程序里讓IE0清零(俗稱軟件清零)才行。

我們把下面的代碼下載進去

#include <reg52.h> 
#include <function.h> //詳見第六章第8講

void main()
{  
    IT0 = 1;
    LED_Init();   //初始化LED硬件模塊 
    
    while(1)
    { 
        if(IE0==1)//只有當P3.2從高電平變成低電平這個瞬間(下降沿)IE0才會被置1,后面P3.2不管是一直保持高電平還是低電平,IE0被清0之后都不會再次被置1,只有P3.2再次產(chǎn)生下降沿才會被置1
        {  
            IE0=0;
            LED2=!LED2;  
        }     
        delay_ms(50);
    }   
}

即使杜邦線一直都插著GND端口,也就是P3.2都保持著低電平,LED2也不會閃爍,只有不斷拔插杜邦線,LED2才會有亮滅的跳變。

所以當IT0等于1時,P3.2遇到下降沿IE0就會被置1,我們軟件把這個位清0之后,如果P3.2沒有再次遇到下降沿,IE0都不會被置1。

點贊(0)

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

一點編程也不會寫的:零基礎C語言學練課程

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

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

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

信息學奧賽或C++選手的 必學C++課程

藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導課程

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