© 1999 Scenix Semiconductor, Inc. All rights reserved. - 17 - www.scenix.com SX18AC  / SX20AC / SX28AC 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 program segment is executed, the device can
receive interrupts 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