SEROUT,HSEROUT or DEBUG ? max 232 or no max232 ?


Closed Thread
Results 1 to 28 of 28

Hybrid View

  1. #1


    Did you find this post helpful? Yes | No

    Default Passsing the variable :-(

    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

  2. #2
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Try
    N2400
    Dave
    Always wear safety glasses while programming.

  3. #3
    Join Date
    Dec 2007
    Location
    Finland
    Posts
    191


    Did you find this post helpful? Yes | No

    Post

    Dennis,

    Have you read this?
    Communications Example : PC to PIC bi-directional dialogue

    Thanks to Melanie! This helped me a lot when I did code, which communicated with PC.


    BR,
    -Gusse-

    Edit 1: I have used baud rate up to 38400 very successful. It might work even higher data rate (haven't try so far).
    Edit 2: Running on 16F876A with 10MHz crystal, haven't tested with PIC that has internal oscillator. 1k5 resistors between PC and PIC (TX & RX).
    Last edited by Gusse; - 21st November 2009 at 20:23.

  4. #4


    Did you find this post helpful? Yes | No

    Default Thanks Gusse

    Will definitely check it out and do the suggested tests :-)
    Thank you

  5. #5


    Did you find this post helpful? Yes | No

    Default Thanks Dave

    Have tried N2400 ... no luck :-(
    Correct me if I'm wrong but surely is well if the string arrives correctly ?

  6. #6
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    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)
    I don't think it's a good idea to set those to 0.
    It will end up overwriting bit0 at address 0 in RAM which is normally PBP's R0 system variable.

    Try it without those lines.

    hth,
    DT

  7. #7


    Did you find this post helpful? Yes | No

    Default Darrel ....YOU are the man !

    Darrel ....
    10 points on spotting this issue ... dude can I borrow those 'fine-tooth comb code-eyes' ???

    So I removed the lines...
    and here are the results .....
    1. LCD response is a million times faster.
    2. Keypresses happen almost instantly now
    3. The LCD was not responding to
    Code:
    lcdout $fe,1          'clear lcd screen
    Now it responds like it should ...each keypress displays correctly, no funny wingdings like characters :-)
    and ... the LCD display clears after every keypress :-)
    YAY
    The LCD and keypress system is working like it should WOOOHOOOOO !!

    Thanks a million
    :-)

    Kind regards
    Dennis

    PS... I still want to know how you noticed that ?? Past experiences ?

    Now all that remains is solving my SEROUT variable passing issue so I can see proper characters in hyperterminal :-)
    I keep getting a little square in hyperterminal as the keypress occurs but on the LCD it appears correct :-(

    the key pressed isthe key pressed isthe key pressed is
    Last edited by Dennis; - 22nd November 2009 at 00:04.

  8. #8
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Dennis View Post
    Have tried N2400 ... no luck :-(
    Correct me if I'm wrong but surely is well if the string arrives correctly ?
    Now all that remains is solving my serout variable passing issue so I can see proper characters in hyperterminal :-)
    now I am confused....
    Dave
    Always wear safety glasses while programming.

  9. #9


    Did you find this post helpful? Yes | No

    Default smoke and mirrors?

    At least I'm not alone then :-)

    I'm sure it has to do with passing the variable 'cos a 'string like this' appears just fine !

    And if I LCDOUT myvar that works fine on the LCD

    What doesn't work fine is when I SEROUT the variable myvar and try read it in hyperterminal

    WEIRD or what ?

    In fact with SEROUT using N2400 the output is worse and even the string of text is wingings :-)
    See next post here for the output screenshot... this tells me that T2400 is correct !
    Last edited by Dennis; - 22nd November 2009 at 00:25.

Similar Threads

  1. N-Bit_MATH
    By Darrel Taylor in forum Code Examples
    Replies: 38
    Last Post: - 16th December 2010, 14:48
  2. Wireless using debug.
    By polymer52 in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 18th January 2010, 14:53
  3. About USB
    By dias11 in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 3rd December 2009, 20:41
  4. debug not working with MPASM assempler
    By santamaria in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 4th March 2009, 07:51
  5. Data EEPROM gets clobbered during programming
    By BrianT in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 18th July 2008, 02:46

Members who have read this thread : 3

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts