PIC12F635/PIC16F636/639
4.0 I/O PORTS
There are as many as twelve 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.
4.1 PORTA and the TRISA Registers
PORTA is a 6-bit wide, bidirectional port. The
corresponding data direction register is TRISA
(Register 4-4). Setting a TRISA bit (= 1) will make the
corresponding PORTA pin an input (i.e., put the
corresponding output driver in a High-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). The
exception is RA3, which is input only and its TRIS bit will
always read as ‘1’. Example 4-1 shows how to initialize
PORTA.
Reading the PORTA register (Register 4-3) 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. RA3 reads ‘0’ when MCLRE = 1.
The TRISA register controls the direction of the
PORTA 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. I/O pins configured as analog inputs always
read ‘0’.
Note:
The CMCON0 (19h) register must be
initialized to configure an analog channel
as a digital input. Pins configured as
analog inputs will read ‘0’.
EXAMPLE 4-1: INITIALIZING PORTA
BCF
BCF
CLRF
MOVLW
MOVWF
BSF
BCF
MOVLW
MOVWF
STATUS,RP0
STATUS,RP1
PORTA
07h
CMCON0
STATUS,RP0
STATUS,RP1
0Ch
TRISA
BCF STATUS,RP0
BCF STATUS,RP1
;Bank 0
;
;Init PORTA
;Set RA<2:0> to
;digital I/O
;Bank 1
;
;Set RA<3:2> as inputs
;and set RA<5:4,1:0>
;as outputs
;Bank 0
;
4.2 Additional Pin Functions
Every PORTA pin on the PIC12F635/PIC16F636/639
has an interrupt-on-change option and a weak pull-up/
pull-down option. RA0 has an Ultra Low-Power Wake-
up option. The next three sections describe these
functions.
4.2.1 WEAK PULL-UP/PULL-DOWN
Each of the PORTA pins, except RA3, has an internal
weak pull-up and pull-down. The WDA bits select either
a pull-up or pull-down for an individual port bit.
Individual control bits can turn on the pull-up or pull-
down. These pull-ups/pull-downs are automatically
turned off when the port pin is configured as an output,
as an alternate function or on a Power-on Reset,
setting the RAPU bit (OPTION_REG<7>). A weak pull-
up on RA3 is enabled when configured as MCLR in the
Configuration Word register and disabled when high
voltage is detected, to reduce current consumption
through RA3, while in Programming mode.
Note: PORTA = GPIO
TRISA = TRISIO
© 2005 Microchip Technology Inc.
Preliminary
DS41232B-page 39