久久成人国产精品一区二区,在线观看成人网站,精品久久久久久成人AV,国产成人无码免费网站

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機 >> 正文

8051單片機并行I/0口讀寫

作者:佚名    文章來源:本站原創(chuàng)    點擊數(shù):    更新時間:2011-8-10

前兩天看資料,見到關(guān)于I/O口作為輸入時,要先輸出1的說明,有點迷惑。今天特意查了一些資料,費了半天勁,雖然還沒有完全弄明白,但也算也所收獲,下面就列出來,以便將來查詢并進一步補充。

   

                            ‍單片機鎖存器電路原理圖


1、作為I/O口使用時,輸入和輸出原理。

I/O口使用時,在控制信號的作用下,與門關(guān)閉,V1截止,同時多路開關(guān)打向下邊,與鎖存器的反向輸出端Q^相連。

輸出數(shù)據(jù)時,“寫鎖存器”端發(fā)出脈沖,將“內(nèi)部總線”上的數(shù)據(jù)寫入輸出鎖存器,由Q^端控制V2,從而在引腳上反應(yīng)出相應(yīng)的狀態(tài)。此種應(yīng)用時P0端口各引腳應(yīng)外接上拉電阻。

輸入數(shù)據(jù)時,分為讀引腳和讀端口兩種方式。讀端口的位置就是上圖中的“讀鎖存器”,而讀引腳則是上圖中的“讀引腳”。至于何時讀端口,何時讀引腳則是根據(jù)不同的指令由硬件自動完成的,這不需要我們操心。

(附:讀端口的指令:讀端口的指令為端口內(nèi)容取反這樣的-修改-指令。

資料稱:這樣的指令才有Read-Modify-Write功效
ANL (logical AND, e.G., ANL P1,A)
ORL (logical OR, e.g., ORL P2,A)
XRL (logical EX-OR, e.g., XRL P3,A)
JBC (jump if bit = 1 and clear bit, e.g., JBC P1.1, LABEL)
CPL (complement bit, e.g., CPL P3.0)
INC (increment, e.g., INC P2)
DEC (decrement, e.g., DEC P2)
DJNZ (decrement and jump if not zero, e.g., DJNZ P3, LABEL)
MOV PX.Y,C(move carry bit to bit Y of
PORT X)
CLR PX.Y(clear bit Y of
PORT X)
SETB PX.Y(set bit Y of
PORT X)

引腳的指令:如下所示,讀之前應(yīng)先將端口置1,即先輸出1,修改鎖存器的內(nèi)容為1

MOV A, P1
MOV 20H, P1
MOV R0, P1
MOV @R0, P1

2、為什么讀之前要先寫1

從上圖可知,如果不對端口置1,端口鎖存器原來的狀態(tài)有可能為0Q端為0Q^1,加到場效應(yīng)管柵極的信號為1,該場效應(yīng)管就導(dǎo)通對地呈現(xiàn)低阻抗,此時即使引腳上輸入的信號為1也會因端口的低阻抗而使信號拉低,使得外加的1信號讀入后不一定是1,若先執(zhí)行置1操作則可以使場效應(yīng)管截止,引腳信號直接加到三態(tài)緩沖器中,實現(xiàn)正確的讀入。

3、實際應(yīng)用

P0P1P2P3I/0口使用時,如果要從外部讀取數(shù)據(jù),讀取之前應(yīng)先將端口置1。因初始化時,四個I/O均被初始化為0XFF,所以若端口在整個程序過程中無輸出時,即輸出鎖存器的狀態(tài)始終為1,則讀數(shù)據(jù)時可不用手動置1。(附:參考引腳內(nèi)部結(jié)構(gòu)圖可知,縱使鎖存器D口數(shù)據(jù)在變(內(nèi)部數(shù)據(jù)線),只要時鐘觸發(fā)端clk沒有觸發(fā)信號,鎖存器中的內(nèi)容永遠(yuǎn)都不會改變,也就是說,不管外部引腳信號如何變,也不管執(zhí)行過多少次讀引腳操作,端口鎖存器中的內(nèi)容是不會發(fā)生變化的。那么,端口內(nèi)容何時變化?答曰:只要執(zhí)行過一次輸出,端口內(nèi)容必為輸出值,因為端口就是輸出的數(shù)據(jù)鎖存器。)

而當(dāng)端口實際應(yīng)用時要不停地同外部數(shù)據(jù)交換時,即又有輸出又有讀入時,如單片機與存儲器<?xml:namespace prefix = st1 />24C16通過I2C總線相連,SCL總是由單片機輸出可不用考慮,而SDA則可通過單片機向外發(fā)數(shù)據(jù),又可以從外部讀數(shù)據(jù),假若之前發(fā)送的最后一位數(shù)據(jù)為0時,此時若再讀數(shù)據(jù),因為鎖存器的狀態(tài)仍為0,則之后立即讀數(shù)據(jù)時就有可能出錯。所以實際操作時,在發(fā)送數(shù)據(jù)代碼之后,總會有一個單片機主動將SDA拉高的指令,之后再讀數(shù)據(jù)時才不會出問題。(本人淺見,不一定正確)

而當(dāng)P0P2口作總線使用與外部并口連接時,應(yīng)該就不會有上面的問題,因為從上圖可各,當(dāng)作總線使用時,在控制信號的作用下,與門導(dǎo)通,同時多路開關(guān)通過反向器與“地址/數(shù)據(jù)總線”連接,此時V1V2的驅(qū)動電路形成反相,形成推拉式電路。在這種情況下輸出時,可直接驅(qū)動電路,不需要接上拉電阻(因為V1導(dǎo)通)。而輸入時,直接讀引腳即可,不需置1。(因為輸入時,地址/數(shù)據(jù)線上沒有數(shù)據(jù),V2應(yīng)該截止(我認(rèn)為的))

----------------------------------

P1_0=!P1_0在KEIL中編譯后的反匯編指令為CPL 1.0;從上面所述可知為讀端口指令,所以可以在C中直接使用,如用作看門狗的清除脈沖和LED燈的閃爍等。

讀端口指令似乎是要對內(nèi)部的端口寄存器(P0~P4)進行改寫時才進行的,所有說要先讀端口鎖存器狀態(tài),改寫完后同時有鎖存器輸出

而讀引腳指令沒有改寫寄存器

Tags:單片機并行I0口讀寫,單片機,端口  
責(zé)任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網(wǎng)友評論
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
久久成人国产精品一区二区,在线观看成人网站,精品久久久久久成人AV,国产成人无码免费网站
    <li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 主站蜘蛛池模板: 亚洲精华国产欧美| 国产精品日日摸夜夜摸av| 欧美不卡激情三级在线观看| 欧美精品日日鲁夜夜添| 欧美激情第三页| 欧美精品福利视频| 欧美日本韩国一区| 欧美特黄一级| 国产精品久久久久久久久借妻 | 亚洲欧美激情诱惑| 午夜视频在线观看一区二区三区| 欧美在线播放一区二区| 性欧美大战久久久久久久久| 久久成人精品无人区| 久久亚洲精品网站| 欧美国产一区二区在线观看 | 久久久久国色av免费观看性色| 久久青草欧美一区二区三区| 免费欧美电影| 欧美精品一区二区三区在线播放| 欧美日韩国产综合久久| 国产精品一区二区在线观看不卡| 国产一区视频在线看| 亚洲福利视频网| 一本久久青青| 亚洲欧美国产va在线影院| 欧美在线视频一区二区| 蜜桃av一区二区三区| 欧美刺激午夜性久久久久久久| 欧美午夜剧场| 国内精品免费午夜毛片| 亚洲区国产区| 亚洲嫩草精品久久| 老巨人导航500精品| 欧美午夜理伦三级在线观看| 国产欧美日韩综合一区在线播放| 亚洲国产成人在线播放| 亚洲无限乱码一二三四麻| 久久精品理论片| 欧美日韩国产三级| 国产欧美二区|