PICBASIC serial communications problem

Hi all

I am trying to communicate with a computer using pic18f4620 in basic programming. I am using the hyperterminal to send and recieve messages. I am displaying the incoming message onto an LCD screen. When I run the code below the LCD screen displays garbage. I am not sure at what baud rate this program should be working either. Please help.

Include "modedefs.bas"

' RS232C Serin2 and Serout2 Demo Program

' Define ONINT_USED to allow use of the boot loader. ' This will not affect normal program operation.

'Define ONINT_USED 1 'DEFINE OSC 32

DEFINE LCD_DREG PORTD 'LCD data port DEFINE LCD_DBIT 0 'LCD data starting bit (0 or 4) DEFINE LCD_RSREG PORTB 'Register select port DEFINE LCD_RSBIT 7 'Register select bit DEFINE LCD_EREG PORTB 'LCD enable port DEFINE LCD_EBIT 6 'LCD enable bit DEFINE LCD_BITS 8 'Defines the number of bits wide DEFINE LCD_LINES 2 'Sets the number of LCD lines DEFINE LCD_COMMANDUS 2000 'Sets the LCD command delay time in us DEFINE LCD_DATAUS 50 'Sets the LCD data delay in us 'ADCON1 = %00001111

' OSCTUNE = $40 ' OSCCON = $72

DEFINE HSER_RCSTA 90H DEFINE HSER_TXSTA 20H DEFINE HSER_BAUD 9600 ' DEFINE HSER_SPBRG 25

TRISB = %00011111 PORTB = %00000000 TRISE.0 = 0 'Set PORTE.0 to output TRISE.1 = 0 'Set PORTE.1 to output TRISE.2 = 0 TRISD = 0

TRISC = %10010000 ' Bits 7 & 4 set as Inputs PORTC = %00000000 ' All off to start

PAUSE 1000

bootupscreen:

LCDOUT $fe,1 'Clear LCD screen pause 500 LCDOUT "USART TESTING" 'Put up self test display pause 500 ' LCDOUT $fe,1 'Clear LCD screen LCDOUT $fe, $C0 'Start of second line LCDOUT "THIS LINE IS CRAP"

pause 500

' ADCON1 = 7 ' Set PORTA and PORTE to digital ' Low PORTE.2 ' LCD R/W line low (W) ' Pause 200 ' Wait for LCD to start up

'Vars: Tx var PORTC.6 ' Rx Var PORTC.7 ' rec var byte[1] ' 'rec var BYTE

'loop: HSERIN [RX, STR rec\\1]

'loop: serin2 rx, 84, [STR rec\\1] 'input ' IF REC = 1 THEN GOTO loop ENDIF

'outlcd: lcdout $fe, $94, "RECEIVE = ", STR rec\\1

'HSEROUT ["RECEIVED"]

' serout2 Tx, 84, ["RECEIVED = ", STR rec\\1] 'output

' PAUSE 500

Vars: Tx var PORTC.6 Rx Var PORTC.7 rec var byte[1] send VAR BYTE

send="y"

' HSERIN {ParityLabel,}{Timeout,Label,}[Item{,...}] ' HSERIN2 {ParityLabel,}{Timeout,Label,}[Item{,...}] ' SERIN Pin,Mode,{Timeout,Label,}{[Qual...],}{Item...} ' SERIN2 DataPin{\\FlowPin},Mode,{ParityLabel,}{Timeout,Label,}[Item...]

' Hserin 10000, start, [char] loop: serin2 rx, 84, [STR rec\\1] ' serin rx, T9600, [STR rec\\1] outlcd: lcdout $fe, 1, "RECEIVE = ", STR rec\\1 serout2 Tx, 84, [send] ' SEROUT Tx, T9600, ["RECEIVED"]

goto loop

Reply to
raajitlall
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.