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