Debouncing, Interrupt driven keypad scans, Summary – Cypress PSoC Style AN2034 User Manual

Page 4

Advertising
background image

AN2034

January 16, 2009

Document No. 001-40409 Rev. *A

4

Example Code 3 is the main function that implements the
design in

Figure 5

on page 3.

Code 3. Keypad Project Implemented

;-----------------------------------------
; This program reads the keypad
; at port 1 and control the LEDs
; on port0.
;
; Copyright (c)
; Cypress Semiconductor 2002-2008.
; All Rights Reserved.
;------------------------------------------
include "m8c.inc"
export _main

_main:
loop:
call bReadKeypad
index KeyToLED
mov reg[PRT0DR], A
jmp loop

ret



xxh: equ 30h ;illegal character “E”

.Literal
KeyToLED:
db 7fh,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,4fh,4ch,xxh,0fh,xxh,xxh,xxh
db 78h,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,12h,24h,xxh,00h,xxh,xxh,xxh
db 01h,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,06h,20h,xxh,04h,xxh,xxh,xxh
db 18h,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,xxh,xxh,xxh,xxh,xxh,xxh,xxh
db xxh,xxh,xxh,xxh,xxh,xxh,xxh,xxh
.EndLiteral

The “.Literal” and “.EndLiteral” macros are used to disable
the compiler’s code compression algorithms so that the
literal information in the KeyToLED table is not
compressed.

This code can also be found in the project associated with
this application note. The table makes for a simple
translation from key press to displayed character. Develop
your own table for a particular application.

Debouncing

Debouncing solutions are specific to each system’s
program structure and switch selection. However,
debouncing is simple; it requires two sequential keypad
scans to agree for the scan to be valid.

Interrupt Driven Keypad Scans

Execute the following steps for an interrupt-instigated key
scan:

ƒ

Configure the lower four (row) pins to be I/O interrupts
on a rising edge.

ƒ

Set the upper four (column) pins high.

ƒ

Write an interrupt handler that calls bReadKeypad.

ƒ

Enable the GPIO interrupt.

The row pins stay low until a key press connects a column
to a row causing an interrupt.

One possible application is a security gate keypad reader
where the MCU is placed in the power-saving-sleep mode.
When someone presses a key, the processor wakes up
and decodes the user’s input. After finishing, the MCU can
put itself back to sleep. For more information about sleep
mode operation please refer to application note

AN2354

.

Summary

The PSoC microcontroller GPIO structure is ideal for fast
keypad scans. The “index” instruction enables simple
translation key presses to a user’s desired format. The
GPIO to interrupts makes for an interrupt-driven keypad
scan.

[+] Feedback

[+] Feedback

Advertising