Datasheet

 2012-2013 Microchip Technology Inc. DS30009312B-page 191
PIC24FJ128GC010 FAMILY
11.3 Input Change Notification (ICN)
The Input Change Notification function of the I/O ports
allows the PIC24FJ128GC010 family of devices to gen-
erate interrupt requests to the processor in response to
a Change-of-State (COS) on selected input pins. This
feature is capable of detecting input Change-of-States,
even in Sleep mode, when the clocks are disabled.
Depending on the device pin count, there are up to
82 external inputs that may be selected (enabled) for
generating an interrupt request on a Change-of-State.
Registers, CNEN1 through CNEN6, contain the interrupt
enable control bits for each of the Change Notification
(CN) input pins. Setting any of these bits enables a CN
interrupt for the corresponding pins.
Each CN pin has both a weak pull-up and a weak
pull-down connected to it. The pull-ups act as a current
source that is connected to the pin, while the pull-downs
act as a current sink that is connected to the pin. These
eliminate the need for external resistors when push but-
ton or keypad devices are connected. The pull-ups and
pull-downs are separately enabled using the CNPU1
through CNPU6 registers (for pull-ups) and the CNPD1
through CNPD6 registers (for pull-downs). Each CN pin
has individual control bits for its pull-up and pull-down.
Setting a control bit enables the weak pull-up or
pull-down for the corresponding pin.
When the internal pull-up is selected, the pin pulls up to
V
DD – 1.1V (typical). When the internal pull-down is
selected, the pin pulls down to V
SS.
EXAMPLE 11-1: PORT WRITE/READ IN ASSEMBLY
EXAMPLE 11-2: PORT WRITE/READ IN ā€˜C’
Note: Pull-ups on Change Notification pins
should always be disabled whenever the
port pin is configured as a digital output.
MOV 0xFF00, W0 ; Configure PORTB<15:8> as inputs
MOV W0, TRISB ; and PORTB<7:0> as outputs
NOP ; Delay 1 cycle
BTSS PORTB, #13 ; Next Instruction
TRISB = 0xFF00; // Configure PORTB<15:8> as inputs and PORTB<7:0> as outputs
Nop(); // Delay 1 cycle
If (PORTBbits.RB13){ }; // Next Instruction