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
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.Code:lcdout dec myvar 'display keypress variable
If I change the code to convert myvar as BINary numbers like this
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.Code:lcdout BIN myvar 'display keypress variable
NOW .....
If I use serout to send myvar to hyperterminal or MicroStudio serial port window like this
I just get "the key is pressed' followed by a windings kinda characters like smileys, blocks and so forth :-(Code:SerOut PORTC.6,T2400,["the key pressed is",myvar]
If I send a string with serout like this
Then everytime I press a key I see "the key is pressed" appearing in hyperterminal.Code:SerOut PORTC.6,T2400,["the key pressed is"]
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
Thank youCode:'************************************* '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
Kind regards
Dennis







Bookmarks