PIC16F872
FIGURE 3-1: BLOCK DIAGRAM OF
3.0
I/O PORTS
RA<3:0> AND RA5 PINS
Some pins for these I/O ports are multiplexed with an
alternate function for the peripheral features on the
device. In general, when a peripheral is enabled, that
pin may not be used as a general purpose I/O pin.
Data
Bus
D
Q
VDD
WR
Port
Additional information on I/O ports may be found in the
PICmicro™
(DS33023).
Q
CK
Mid-Range
Reference
Manual,
P
Data Latch
D
3.1
PORTA and the TRISA Register
I/O pin(1)
N
Q
PORTA is a 6-bit wide, bi-directional port. The corre-
sponding data direction register is TRISA. Setting a
TRISA bit (=1) will make the corresponding PORTA pin
an input (i.e., put the corresponding output driver in a
hi-impedance mode). Clearing a TRISA bit (=0) will
make the corresponding PORTA pin an output (i.e., put
the contents of the output latch on the selected pin).
WR
TRIS
VSS
Analog
Input
Q
CK
TRIS Latch
Mode
TTL
RD TRIS
Input
Buffer
Reading the PORTA register reads the status of the
pins, whereas writing to it will write to the port latch. All
write operations are read-modify-write operations.
Therefore, a write to a port implies that the port pins are
read, the value is modified and then written to the port
data latch.
Q
D
EN
Pin RA4 is multiplexed with the Timer0 module clock
input to become the RA4/T0CKI pin. The RA4/T0CKI
pin is a Schmitt Trigger input and an open drain output.
All other PORTA pins have TTL input levels and full
CMOS output drivers.
RD Port
To A/D Converter
Note 1: I/O pins have protection diodes to VDD and VSS.
Other PORTA pins are multiplexed with analog inputs
and analog VREF input. The operation of each pin is
selected by clearing/setting the control bits in the
ADCON1 register (A/D Control Register1).
FIGURE 3-2: BLOCK DIAGRAM OF RA4/
T0CKI PIN
Note: On a Power-on Reset, these pins are con-
Data
Bus
figured as analog inputs and read as '0'.
D
Q
Q
The TRISA register controls the direction of the RA
pins, even when they are being used as analog inputs.
The user must ensure the bits in the TRISA register are
maintained set when using them as analog inputs.
WR
Port
CK
I/O pin(1)
N
Data Latch
D
Q
VSS
EXAMPLE 3-1: INITIALIZING PORTA
WR
TRIS
BCF
BCF
CLRF
STATUS, RP0
STATUS, RP1
PORTA
;
Schmitt
Trigger
Input
Q
CK
; Bank0
; Initialize PORTA by
; clearing output
; data latches
TRIS Latch
Buffer
BSF
STATUS, RP0
0x06
ADCON1
0xCF
; Select Bank 1
; Configure all pins
; as digital inputs
; Value used to
; initialize data
; direction
RD TRIS
MOVLW
MOVWF
MOVLW
Q
D
EN
EN
RD Port
MOVWF
TRISA
; Set RA<3:0> as inputs
; RA<5:4> as outputs
; TRISA<7:6> are always
; read as ’0’.
TMR0 clock input
Note 1: I/O pin has protection diodes to VSS only.
1999 Microchip Technology Inc.
Preliminary
DS30221A-page 23