© 2000 Scenix Semiconductor, Inc. All rights reserved.
- 18 -
www.scenix.com
SX18AC/SX20AC/SX28AC/SX18AC75/SX20AC75/SX28AC75
7.2 Port B MIWU/Interrupt Configuration
The WKPND_B register comes up with a random value
upon reset. The user program must clear the register
prior to enabling the wake-up condition or interrupts. The
proper initialization sequence is:
1. Select the desired edge (through WKED_B register).
2. Clear the WKPND_B register.
3. Enable the Wakeup condition (through WKEN_B regis-
ter).
Below is an example of how to read the WKPND_B regis-
ter to determine which Port B pin caused the wakeup or
interrupt, and to clear the WKPND_B register:
The final mov instruction in this example performs an
exchange of data between the working register (W) and
the WKPND_B register. This exchange occurs only with
Port B accesses. Otherwise, the mov instruction does
not perform an exchange, but only moves data from the
source to the destination.
Here is an example of a program segment that config-
ures the RB0, RB1, and RB2 pins to operate as Multi-
Input Wakeup/Interrupt pins, sensitive to falling edges:
To prevent false interrupts, the enabling step (clearing
bits in WKEN_B) should be done as the last step in a
sequence of Port B configuration steps. After this pro-
gram segment is executed, the device can receive inter-
rupts on the RB0, RB1, and RB2 pins. If the device is put
into the power down mode (by executing the SLEEP
instruction), the device can then receive wakeup signals
on those same pins.
mov M,#$09
clr W
mov
!RB,W
;W contains WKPND_B
;contents of W exchanged
;with contents of WKPND_B
mov M,#$0F
;prepare to write port data
;direction registers
mov W,#$07
;load W with the value 07h
mov !RB,W
;configure RB0-RB2 to be inputs
mov M,#$0A
;prepare to write WKED_B
;(edge) register
;W contains the value 07h
mov !RB,W
;configure RB0-RB2 to sense
;falling edges
mov M,#$09
;prepare to access WKPND_B
;(pending) register
mov W,#$00
;clear W
mov !RB,W
;clear all wakeup pending bits
mov M,#$0B
;prepare to write WKEN_B (enable)
;register
mov W,#$F8h ;load W with the value F8h
mov !RB,W
;enable RB0-RB2 to operate as
;wakeup inputs