Keyboard Interrupt Module (KBI)
MC68HC908GZ60 MC68HC908GZ48 MC68HC908GZ32 Data Sheet, Rev. 6
118
Freescale Semiconductor
If the MODEK bit is set and depending on the KBIPx bit, the keyboard interrupt pins are both falling (or
rising) edge and low (or high) level sensitive, and both of the following actions must occur to clear a
keyboard interrupt request:
Vector fetch or software clear — A vector fetch generates an interrupt acknowledge signal to clear
the interrupt request. Software may generate the interrupt acknowledge signal by writing a 1 to the
ACKK bit in the keyboard status and control register (INTKBSCR). The ACKK bit is useful in
applications that poll the keyboard interrupt pins and require software to clear the keyboard
interrupt request. Writing to the ACKK bit prior to leaving an interrupt service routine can also
prevent spurious interrupts due to noise. Setting ACKK does not affect subsequent transitions on
the keyboard interrupt pins. A falling (or rising) edge that occurs after writing to the ACKK bit
latches another interrupt request. If the keyboard interrupt mask bit, IMASKK, is clear, the CPU
loads the program counter with the vector address at locations $FFE0 and $FFE1.
Return of all enabled keyboard interrupt pins to 1 (or 0) — As long as any enabled keyboard
interrupt pin is 0 (or 1), the keyboard interrupt remains set.
The vector fetch or software clear and the return of all enabled keyboard interrupt pins to 1 (or 0) may
occur in any order.
If the MODEK bit is clear and depending on the KBIPx bit, the keyboard interrupt pin is falling (or rising)
edge sensitive only. With MODEK clear, a vector fetch or software clear immediately clears the keyboard
interrupt request.
Reset clears the keyboard interrupt request and the MODEK bit, clearing the interrupt request even if a
keyboard interrupt pin stays at 0 (or 1).
The keyboard flag bit (KEYF) in the keyboard status and control register can be used to see if a pending
interrupt exists. The KEYF bit is not affected by the keyboard interrupt mask bit (IMASKK) which makes
it useful in applications where polling is preferred.
To determine the logic level on a keyboard interrupt pin, use the data direction register to configure the
pin as an input and read the data register.
NOTE
Setting a keyboard interrupt enable bit (KBIEx) forces the corresponding
keyboard interrupt pin to be an input, overriding the data direction register.
However, the data direction register bit must be a 0 for software to read the
pin.
9.4 Keyboard Initialization
When a keyboard interrupt pin is enabled, it takes time for the internal pullup/pulldown device to reach a
1 (or 0). Therefore, a false interrupt can occur as soon as the pin is enabled.
To prevent a false interrupt on keyboard initialization:
1.
Mask keyboard interrupts by setting the IMASKK bit in the keyboard status and control register.
2.
Enable the KBI pins and polarity by setting the appropriate KBIEx bits in the keyboard interrupt
enable register and the KBIPx bits in the keyboard interrupt polarity register.
3.
Write to the ACKK bit in the keyboard status and control register to clear any false interrupts.
4.
Clear the IMASKK bit.