Here's something to play with
Code:
DEFINE LCD_DREG PORTA
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 4
DEFINE LCD_EREG PORTE
DEFINE LCD_EBIT 0
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
include "keypad.bas"
DEFINE KEYPAD_ROW 4 ' 4 ROW keypad
DEFINE KEYPAD_ROW_PORT PORTB ' ROW port = PORTB
DEFINE KEYPAD_ROW_BIT 4 ' ROW0 = PORTB.4
DEFINE KEYPAD_COL 3 ' 3 COL keypad
DEFINE KEYPAD_COL_PORT PORTB ' COL port = PORTB
DEFINE KEYPAD_COL_BIT 1 ' COL0 = PORTB.1
DEFINE KEYPAD_DEBOUNCEMS 50 ' debounce delay = 50 mSec
DEFINE SCAN_ONCE 1
OPTION_REG.7=0 ' Enable internal crap pull-up :D
ADCON1=7 ' disable ADCs
PORTB = 0 '
TRISB = %11110000 '
ByteA var byte '
INTCON = %10001000 ' Enable global interrupt
' Enable interrupt on PORTB change
on interrupt goto KeypadInt
CLEAR
Init:
lcdout $FE,1,"Press any Key"
Start:
if Bytea then
LCDOUT $FE,1,"Key=",dec bytea
bytea=0
pause 1000
goto init
endif
goto start
disable
KeypadINT:
@ READKEYPAD _ByteA
TRISB=%11110000
PORTB=0
INTCON.0=0
resume
enable
you'll find the Keypad.Bas file in attachement. Don't forget to include it in the same directory.
Enjoy
Bookmarks