So far I have tested ..SEROUT,SEROUT2 and DEBUG 
I just have an issue with somehow passing a variable around in my code it seems using SEROUT,SEROUT2 and DEBUG.
So far I can capture a keypress (thanks to mister e's matrix keypad routine and advice and tips from several others - thank you!)
The keypress from the keypad is stored in a variable called myvar.
I send myvar to the LCD using
Code:
lcdout dec myvar 'display keypress variable
and on the LCD the DECimal number lets say I press 1 on the keypad appears as ||1 and for the number 2 on keypad it appears as ||2 and so on.
If I change the code to convert myvar as BINary numbers like this
Code:
lcdout BIN myvar 'display keypress variable
then when I press the number 1 on the keypad I get ||1 on the LCD and then the keypad 2 shows as ||2 and so on.
NOW .....
If I use serout to send myvar to hyperterminal or MicroStudio serial port window like this
Code:
SerOut PORTC.6,T2400,["the key pressed is",myvar]
I just get "the key is pressed' followed by a windings kinda characters like smileys, blocks and so forth :-(
If I send a string with serout like this
Code:
SerOut PORTC.6,T2400,["the key pressed is"]
Then everytime I press a key I see "the key is pressed" appearing in hyperterminal.
Here is my code ....I would really appreciated if someone could point me towards finding a solution as ultimately I would like to TX the binary keypress to be RX for another PIC
Code:
'*************************************
'Keypress display on LCD and TX to wherever
'*************************************
'Ocsillator selections here
OSCCON = $70 'Int CLK 8MHz
OSCTUNE.6 = 1 'PLL 4x
ADCON1= %00001111 '$0F = disable A/D converter
cmcon = 7
INTCON2.7 = 0 'switch pull-ups ON
'END of oscillator selections
'timer/oscillator defines
DEFINE OSC 32 '4x 8MHz
'END of timer/oscillator defines
'Port IO directions and presets for port pins begin here
'TRISX = %76543210 << tris bit order numbering
'TRISA = %11111111 'All pins are outputs
'// Define port pins as inputs and outputs ...
TRISA = %00000000 'example only - TRISB = %00001111 ;Make B4-B7 outputs, B0-B3 inputs,
TRISB = %11111111 'for 4x4 keypad all input
TRISC = %10000000
TRISD = %00000000
TRISE.0 = 0
TRISE.1 = 0
TRISE.2 = 0
'End of Port IO directions and presets for port pins begin here
'variables begin here
myvar var byte
dataout var byte
'end of variables
'LCD defines begin here
DEFINE LCD_BITS 4 'defines the number of data interface lines (4 or 8)
DEFINE LCD_DREG PORTD 'defines the port where data lines are connected to
DEFINE LCD_DBIT 4 'defines the position of data lines for 4-bit interface (0 or 4)
DEFINE LCD_RSREG PORTD 'defines the port where RS line is connected to
DEFINE LCD_RSBIT 2 'defines the pin where RS line is connected to
DEFINE LCD_EREG PORTD 'defines the port where E line is connected to
DEFINE LCD_EBIT 3 'defines the pin where E line is connected
DEFINE LCD_RWREG 0 'defines the port where R/W line is connected to (set to 0 if not used)
DEFINE LCD_RWBIT 0 'defines the pin where R/W line is connected to (set to 0 if not used)
DEFINE LCD_COMMANDUS 2000 'defines the delay after LCDOUT statement
DEFINE LCD_DATAUS 200 'delay in micro seconds
'END of LCD DEFINES
'includes begin here
INCLUDE "modedefs.bas"
include "c:\pbp\samples\keypad.bas"
'end of includes
'Keypad code begins here
DEFINE KEYPAD_ROW 4 ' 4 ROW keypad
DEFINE KEYPAD_ROW_PORT PORTB ' ROW port = PORTB
DEFINE KEYPAD_ROW_BIT 0 ' ROW0 = PORTB.4
DEFINE KEYPAD_COL 4 ' 4 COL keypad
DEFINE KEYPAD_COL_PORT PORTB ' COL port = PORTB
DEFINE KEYPAD_COL_BIT 4 ' COL0 = PORTB.0
DEFINE KEYPAD_DEBOUNCEMS 200 ' debounce delay = 200 mSec
DEFINE KEYPAD_AUTOREPEAT 1 ' use auto-repeat feature
'end keypad code
'Main code begins here
Pause 2000 ' Wait for LCD to startup
start:
'read keypress variable
@ READKEYPAD _myvar
lcdout $fe, 1 'clear lcd screen
lcdout BIN myvar 'display keypress variable
SerOut PORTC.6,T2400,["the key pressed is",myvar] 'SerOut PinNumber2,T2400,DataRec
pause 1000
lcdout $fe,1 'clear lcd screen
goto start
'End of all code
Thank you
Kind regards
Dennis
Bookmarks