PORTA 和 TRISA 寄存器
PORTA是8位寬的雙向端口。它所對應的數據方向寄存器是 TRISA(寄存器 3-2)。將 TRISA 的一個位置 1(= 1)可以將相應的 PORTA 引腳配置為輸入(即,禁止輸出驅動器) 。清零TRISA的一個位(= 0)可將相應的 PORTA 引腳配置為輸出(即,將輸出鎖存器的內容輸出到所選擇的引腳)。
讀 PORTA 寄存器(寄存器 3-1)讀的是引腳的狀態而寫該寄存器將會寫入端口鎖存器。所有寫操作都是讀-修改-寫操作。因此,寫一個端口就意味著先讀該端口的引腳電平,修改讀到的值,然后再將改好的值寫入端口數據鎖存器。
即使在 PORTA 引腳用作模擬輸入時,TRISA 寄存器(寄存器 3-2)仍然控制 PORTA 引腳的方向。當將PORTA引腳用作模擬輸入時,用戶必須確保 TRISA寄存器中的位保持為置 1 狀態。 配置為模擬輸入的 I/O 引腳總是讀為0。
PORTA:bit 7-0 RA<7:0>:PORTA I/O 引腳位
1 = 端口引腳電平> VIH
0 = 端口引腳電平< VIL
bit 7-0 TRISA<7:0>: PORTA 三態控制位
1 = PORTA 引腳被配置為輸入(三態)
0 = PORTA 引腳被配置為輸出
注 1: TRISA<7:6> 在 XT、 HS 和 LP 振蕩器模式下總是讀為 1。
例:初始化 PORTA
注: 必須初始化ANSEL寄存器以將模擬通道配置為數字輸入。配置為模擬輸入的引腳將
讀為0。
BANKSEL PORTA ;
CLRF PORTA ;Init PORTA
BANKSEL ANSEL ;
CLRF ANSEL ;digital I/O
BANKSEL TRISA ;
MOVLW 0Ch ;Set RA<3:2> as inputs
MOVWF TRISA ;and set RA<5:4,1:0>;as outputs
ANSEL 寄存器
ANSEL 寄存器(寄存器3-3)用于將I/O引腳的輸入模式配置為模擬模式。將 ANSEL 中適當的位置 1 將導致對相應引腳的所有數字讀操作返回 0,并使引腳的模擬功能正常工作。
ANSEL 位的狀態對數字輸出功能沒有影響。 TRIS 清零且 ANSEL 置 1 的引腳仍作為數字輸出,但輸入模式將成為模擬模式。這會導致在受影響的端口上執行讀-修改-寫操作時產生不可預計的結果。
ANSEL :bit 7-0 ANS<7:0>:模擬選擇位
分別選擇引腳AN<7:0>的模擬或數字功能。
1 =模擬輸入。引腳被分配為模擬輸入(1)。
0 =數字 I/O。引腳被分配給端口或特殊功能。
注 1: 將引腳設置為模擬輸入將自動禁止數字輸入電路、弱上拉電路和電平變化中斷(如果有的話) 。相應的TRIS 位必須置 1以將引腳設置為輸入模式,從而允許從外部控制引腳電壓。
2:在 PIC16F883/886 上未實現。
|