Microchip Technology IC MCU 8BIT PIC18F65K22-I/PT TQFP-64 MCP PIC18F65K22-I/PT Data Sheet

Product codes
PIC18F65K22-I/PT
Page of 550
PIC18F87K22 FAMILY
DS39960D-page 172
 2009-2011 Microchip Technology Inc.
12.3
PORTB, TRISB and 
LATB Registers
PORTB is an eight-bit wide, bidirectional port. The
corresponding Data Direction and Output Latch registers
are TRISB and LATB. All pins on PORTB are digital only.
EXAMPLE 12-2:
INITIALIZING PORTB 
Each of the PORTB pins has a weak internal pull-up. A
single control bit can turn on all the pull-ups. This is
performed by clearing bit, RBPU (INTCON2<7>). The
weak pull-up is automatically turned off when the port
pin is configured as an output. The pull-ups are
disabled on a Power-on Reset.
Four of the PORTB pins (RB<7:4>) have an
interrupt-on-change feature. Only pins configured as
inputs can cause this interrupt to occur. Any RB<7:4>
pin configured as an output will be excluded from the
interrupt-on-change comparison.
Comparisons with the input pins (of RB<7:4>) are
made with the old value latched on the last read of
PORTB. The “mismatch” outputs of RB<7:4> are ORed
together to generate the RB Port Change Interrupt with
Flag bit, RBIF (INTCON<0>). 
This interrupt can wake the device from
power-managed modes. To clear the interrupt in the
Interrupt Service Routine:
a) Any read or write of PORTB (except with the
MOVFF (ANY), PORTB
 instruction). This will
end the mismatch condition.
b) Wait one instruction cycle (such as executing a
NOP
 instruction).
c)
Clear flag bit, RBIF.
A mismatch condition will continue to set flag bit, RBIF.
Reading PORTB will end the mismatch condition and
allow flag bit, RBIF, to be cleared after one T
CY
 delay.
The interrupt-on-change feature is recommended for
wake-up on key depression operation and operations
where PORTB is only used for the interrupt-on-change
feature. Polling of PORTB is not recommended while
using the interrupt-on-change feature.
The RB<3:2> pins are multiplexed as CTMU edge
inputs. RB5 has an additional function for Timer3 and
Timer1. It can be configured for Timer3 clock input or
Timer1 external clock gate input.
CLRF
PORTB
;
  Initialize PORTB by
; clearing output
; data latches
CLRF
LATB
; Alternate method
; to clear output
; data latches
MOVLW
0CFh
;
  Value used to
; initialize data 
; direction
MOVWF
TRISB
;
  Set RB<3:0> as inputs
;
  RB<5:4> as outputs
;
  RB<7:6> as inputs
TABLE 12-3:
PORTB FUNCTIONS
Pin Name
Function
TRIS 
Setting
I/O
I/O 
Type
Description
RB0/INT0/FLT0
RB0
0
O
DIG
LATB<0> data output.
1
I
TTL
PORTB<0> data input; weak pull-up when RBPU bit is cleared.
INT0
1
I
ST
External Interrupt 0 input.
FLT0
x
I
ST
Enhanced PWM Fault input for ECCPx.
RB1/INT1
RB1
0
O
DIG
LATB<1> data output.
1
I
TTL
PORTB<1> data input; weak pull-up when RBPU bit is cleared.
INT1
1
I
ST
External Interrupt 1 input.
RB2/INT2/CTED1
RB2
0
O
DIG
LATB<2> data output.
1
I
TTL
PORTB<2> data input; weak pull-up when RBPU bit is cleared.
INT2
1
I
ST
External Interrupt 2 input.
CTED1
x
I
ST
CTMU Edge 1 input.
Legend:
O = Output, I = Input, ANA = Analog Signal, DIG = Digital Output, ST = Schmitt Trigger Buffer Input, 
TTL = TTL Buffer Input, x = Don’t care (TRIS bit does not affect port direction or is overridden for this option).
Note
1:
Alternate assignment for ECCP2 when the CCP2MX Configuration bit is cleared and in Extended Microcontroller mode.