在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 單片機引腳讀寫操作

            單片機引腳讀寫操作

            作者: 時間:2016-10-29 來源:網(wǎng)絡 收藏

            使用時肯定會用到的IO。以51P1口為例。內(nèi)部結(jié)構(gòu)如圖所示

            本文引用地址:http://www.biyoush.com/article/201610/307392.htm
            1.jpg

            當單片機進行寫操作時,鎖存器(D觸發(fā)器)CLK端接收有效電平,然后內(nèi)部總線上需要寫的數(shù)據(jù)就會通過D觸發(fā)器傳輸?shù)絈'。當寫1時Q'為0,使MOSFET截止,因此外部電平為1.當寫0時Q'為1,MOSFET飽和導通,此時引腳可以看成接地,所以引腳為0。

            如果對單片機IO口進行讀操作。由圖可以看出讀操作包括讀寄存器和讀引腳。以前知道有這兩種區(qū)別,但是從來沒仔細區(qū)分過。從圖中可以看出讀寄存器時讀寄存器上的三態(tài)緩沖器打開,Q端的值直接傳到了內(nèi)部總線上,而下面的讀引腳三臺緩沖器是高阻態(tài),讀引腳時則相反。

            匯編語言中對讀寄存器和讀引腳做了一定的區(qū)別,但說實話我在看匯編代碼時還是區(qū)分不清兩者的區(qū)別?,F(xiàn)在大家對單片機編程應該大部分采用的都是C語言,在我看來,C語言中已經(jīng)極大的淡化了讀寄存器還是讀引腳的區(qū)別。

            有些人說a=P1是讀引腳(a是某個字符變量),P1=P1|0x00是讀寄存器(可能是認為這里P1進行了一次邏輯運算,只有寄存器中的值才能進行邏輯運算),但我在用C語言時感覺用P1=P1|0x00也是讀的引腳。也有些人說看經(jīng)過編譯器編譯后的匯編代碼才能分辯出兩者的區(qū)別,不知道這里大家怎么看讀引腳和讀寄存器?

            在讀引腳時需要先向引腳鎖存器中寫1。因為如果引腳寄存器中是0的話會導通MOSFET,使外部端口一直是低電平,即使外面接的是高電平在讀引腳的時候也讀的是0。以前知道需要這樣做,但讀引腳的時候一直沒寫過1,發(fā)現(xiàn)讀的也對,現(xiàn)在我覺得這樣寫不符合規(guī)范。

            一般來說單片機在上電復位后默認引腳寄存器的值是1,這樣一來關(guān)斷了MOSFET,而我們在使用單片機的時候如果這個引腳作為輸入,也不會讓它變成一會兒輸出一會兒輸入,使得能夠準確的讀出外部端口的值?,F(xiàn)在我在寫程序時如果端口做為輸入引腳,我會在初始化里對其寫一次1。當然,以后就不用寫了,因為寫了一次1后沒有其他的寫操作,引腳鎖存器中會一直保持這個值不變。當然,如果某個單片機引腳同時作為輸出和輸入引腳復用時,則必須在輸出完成后變成輸入前先向其寫1,再讀引腳的值。



            關(guān)鍵詞: 單片機 引腳

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉