48 www.ubicom.com IP2022 Data Sheet return the data previously written to the data output buffer
registers,   which   might   not   correspond   to   the   states
actually  present  on  pins  configured  as  inputs  or  pins
forced to another state by an external device.
5.1.5 RxDIR Registers The RxDIR registers select the direction of the port pins.
For each output port pin, clear the corresponding RxDIR
bit. For each input port pin, set the corresponding RxDIR
bit.  Unused  pins  that   are  left   open-circuit   should  be
configured as outputs, to keep them from floating.
For example, to configure Port A pins RA3 and RA2 as
outputs and RA1 and RA0 as inputs, the following code
could be used:
The second move instruction in this example writes the
RADIR register, located at address 0x022. Because Port
A has only four I/O pins, only the four least significant bits
of this register are used.
To  drive  the  RA1  pin  low  and  the  RA0  pin  high,  the
following code then could be executed:
The  second  move  instruction  shown  above  writes  the
RAOUT register, located at address 0x021. When reading
the  Port  A  pins  through  the  RAIN  register  (0x020),  the
upper four bits always read as zero.
When a write is performed to the RxOUT register of a port
pin  that  has  been  configured  as  an  input,  the  write  is
performed but it has no immediate effect on the pin. If that
pin is later configured as an output, the pin will be driven
with  the  data  that  had  been  previously  written  to  the
RxOUT register.
5.1.6 INTED Register The INTED register consists of 8 edge detection bits that
correspond to the 8 pins of Port B. A set bit in the INTED
register  makes  the  corresponding  port  pin  trigger  on
falling edges, while a clear bit makes the pin trigger on
rising edges.
5.1.7 INTF Register The   INTF   register   consists   of   8   interrupt   flags   that
correspond to the 8 pins of Port B. If the trigger condition
for a Port B pin occurs, the corresponding bit in the INTF
register  is  set.  The  bit  is  set  even  if  the  port  pin  is  not
enabled as a source of interrupts.
The interrupt service routine (ISR) can check this register
to determine the source of an external interrupt. If a Port
B pin enabled for generating interrupts has a set bit in the
INTF register, software must clear the bit prior to exiting to
prevent repeated calls to the ISR.
The Port B interrupt logic is asynchronous (e.g. functions
without a clock in clock-stop mode). A side effect is that
there is a 2-cycle delay between the instruction that clears
a  INTF  bit  and  the  bit  being  cleared.  This  means  that
software   must   clear  the  bit   at  least   2  cycles  before
executing a return from interrupt (reti) instruction.
5.1.8 INTE Register The INTE register consists of 8 interrupt enable bits that
correspond to the 8 pins of Port B. A Port B pin is enabled
as a source of interrupts by setting the corresponding bit
in the INTE register. The pin is disabled as an interrupt
source by clearing the corresponding INTE bit, but takes
up to 1 core clock cycle for the interrupt to be disabled.
5.1.9 Port Configuration Upon Power-Up On  power-up,  all  the  port  control  registers  (RxDIR)  are
initialized to 0xFF. Therefore, each port pin is configured
as   a   high-impedance   input.   This   prevents   any   false
signalling to external components which could occur if the
ports were allowed to assume a random configuration at
power-up.
mov w,#0x03 ;load W with the value 0x03 ;(bits 3:2 low, and bits 1:0 ;high) mov 0x022,w ;write 0x03 to RADIR ;register mov w,#0x01 ;load W with the value 0x01 ;(bits 3:1 low, and bit 0
;high)
mov 0x021,w ;write 0x01 to RAOUT ;register