日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

  • <label id="0soqe"><form id="0soqe"></form></label>
    <abbr id="0soqe"><form id="0soqe"></form></abbr>
    當前位置:首頁 > 單片機 > 單片機
    [導讀] 使用單片機時肯定會用到單片機的IO引腳。以51單片機P1口為例。內部結構如圖所示當單片機進行寫操作時,引腳鎖存器(D觸發(fā)器)CLK端接收有效電平,然后內部總線上需要寫的數據就會通過D觸發(fā)器傳輸到Q'。當寫1時Q'為0,

     使用單片機時肯定會用到單片機的IO引腳。以51單片機P1口為例。內部結構如圖所示

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

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

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

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

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

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

    本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
    換一批
    延伸閱讀
    關閉