PIC12F609/615/617/12HV609/615
5.0 I/O PORT
There are as many as six general purpose I/O pins
available. Depending on which peripherals are enabled,
some or all of the pins may not be available as general
purpose I/O. In general, when a peripheral is enabled,
the associated pin may not be used as a general
purpose I/O pin.
5.1 GPIO and the TRISIO Registers
GPIO is a 6-bit wide port with 5 bidirectional and 1 input-
only pin. The corresponding data direction register is
TRISIO (Register 5-2). Setting a TRISIO bit (= 1) will
make the corresponding GPIO pin an input (i.e., disable
the output driver). Clearing a TRISIO bit (= 0) will make
the corresponding GPIO pin an output (i.e., enables
output driver and puts the contents of the output latch on
the selected pin). The exception is GP3, which is input
only and its TRIS bit will always read as ‘1’. Example 5-
1 shows how to initialize GPIO.
Note: GPIO = PORTA
TRISIO = TRISA
REGISTER 5-1: GPIO: GPIO REGISTER
U-0
—
bit 7
U-0
R/W-x
R/W-x
—
GP5
GP4
Reading the GPIO register (Register 5-1) 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, this value is modified and then
written to the PORT data latch. GP3 reads ‘0’ when
MCLRE = 1.
The TRISIO register controls the direction of the
GPIO pins, even when they are being used as analog
inputs. The user must ensure the bits in the TRISIO
register are maintained set when using them as analog
inputs. I/O pins configured as analog input always read
‘0’.
Note:
The ANSEL register must be initialized to
configure an analog channel as a digital
input. Pins configured as analog inputs will
read ‘0’ and cannot generate an interrupt.
EXAMPLE 5-1:
BANKSEL
CLRF
BANKSEL
CLRF
GPIO
GPIO
ANSEL
ANSEL
MOVLW
MOVWF
0Ch
TRISIO
INITIALIZING GPIO
;
;Init GPIO
;
;digital I/O, ADC clock
;setting ‘don’t care’
;Set GP<3:2> as inputs
;and set GP<5:4,1:0>
;as outputs
R-x
GP3
R/W-x
GP2
R/W-x
GP1
R/W-x
GP0
bit 0
Legend:
R = Readable bit
-n = Value at POR
W = Writable bit
‘1’ = Bit is set
U = Unimplemented bit, read as ‘0’
‘0’ = Bit is cleared
x = Bit is unknown
bit 7-6
bit 5-0
Unimplemented: Read as ‘0’
GP<5:0>: GPIO I/O Pin bit
1 = GPIO pin is > VIH
0 = GPIO pin is < VIL
2010 Microchip Technology Inc.
DS41302D-page 43