Here's something to play with
you'll find the Keypad.Bas file in attachement. Don't forget to include it in the same directory.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
Enjoy




Bookmarks