PIC單片機之16C84單片機介紹(二)
PIC16C84具有兩個I/O端口,PORTA,PORTB。某些端口的引腳用來與另外一些功能復(fù)用。
5-1 PORTA和TRISA寄存器
PIC16C84的 PORTH是5位寬度的鎖存器。RA4是施密特觸發(fā)器輸入,一個集電極開路輸出。端口A的所有其它的引腳為TTL電平輸入,含CMOS輸出驅(qū)動。所有引腳有數(shù)據(jù)方向位(TRISA寄存器),可通過TRI SA來配置PORTA的引腳是輸入式輸出。設(shè)置TRISA的某位為1,則對應(yīng)的 PORTA的位為輸入,若設(shè)置為0,對應(yīng)的PORTA的某位為輸出。
讀PORTA寄存器,讀入引腳的狀態(tài),向PORTA寫入,則寫到PORTA的鎖存器。所有的寫操作都是讀--修改--寫操作。當向端口寫時,它首先讀端口引腳,然后修改其位,再寫入端口的數(shù)據(jù)鎖存器。下面這段程序是對端口A的初始化:
CLRF PORTA;初始化端口A
BSF STATUS,RPO;選擇1塊
MovLW CFH ;用于初始化數(shù)據(jù)方向的值
MOVWF TRISA;設(shè)置RA3:0>為輸入;RA5:4>為輸出 ; 7:6>總是為0(無用)
RA4是為TMRO的時鐘輸入復(fù)用。即如果這一位用作TMRO的時鐘輸入,則端口A就不能用RA4。
5-2 PROTB和TRISB寄存器
PORTB是8位寬度的雙向端口。相應(yīng)的數(shù)據(jù)由TRISB決定,方法用端口A。
端口B的每一個引腳都具有內(nèi)部弱的上拉電阻。通過一個控制位可以打開所有上拉電阻。這可通過對OPTION7>RBPU位的置1,清0來控制。當端口引腳配置成輸出時,內(nèi)部弱上拉電阻被自動關(guān)閉。上位是 端口需要的。PORTB的4個引腳RBT~RB4具有信號改變中斷的功能,只要將這幾個引腳配置為輸入,就可能引起中斷的發(fā)生。在輸入方式下,引腳的位與最后一次讀PORTB的值進行比較,這四個引腳中有任何一個或多個不相同,產(chǎn)生RBIF中端(置INTCON0>)。這個中斷可能將 器件由SLEEP狀態(tài)下喚醒。用戶在中斷服務(wù)程序中可以用這樣的兩個方法之一來清除中斷。①通過清0RBIE(INT CON3>位)關(guān)閉中斷,② 讀端口B,則清0 RBIF位。
不相等的條件將繼續(xù)配置1RBIF位為止。讀PORTB將結(jié)束不相等條件,并允許RBIF被清0。這一特征為軟件可配置上拉一起允許用戶非常容易的使用PORTB作為鍵盤輸入的接口。也就可以通過按鍵來喚醒系統(tǒng)。
注意:如果正在執(zhí)行斂僮鰨琁/O引腳改變了信號,RBIF中斷標志不可能被置成1。
建議用改變信號中斷作為按鍵喚醒操作,PORTB只不用改變信號中斷,建議不要用查詢方式。圖4-7是用端口作鍵盤接口的原理圖其R1為ESD保護而新選擇的電阻。使用此接口時,通過軟件選擇保持內(nèi)部上拉,即RB4~RB7為高,設(shè)置為輸入方式。RB0~RB3輸出。任何鍵被按下,RB4~RB7的某一根線將改變從而產(chǎn)生中斷。這個中斷可以喚醒芯片,用這種方法可以節(jié)省計時器資源。
16個鍵
評論