Source Code File:"combaslib.bas"

'************************************************************************
'*                                                                      *
'*      SOFTWARE USART AT 2400 BAUD LIBRARY FOR USE WITH BOOST BASIC    *
'*                                                                      *
'*           WRITTEN BY      :  PUNERJOT SINGH MANGAT                   *
'*           COUNTRY         :  INDIA                                   *
'*           CITY            :  PATIALA                                 *
'*           WEB PAGE        :  www.rackeys.com/punerjot                *
'*           EMAIL           :  punerjot@rackeys.com                    *
'*           SOURCEBOOST ID  :  c58_4311                                *
'*           RELEASE DATE    :  March 03, 2006                          *
'*           REVISED DATE    :  May 24, 2006                            *
'*                                                                      *
'*           REVISED DATE    :  November 21, 2008                       *
'*            Peter Putnam.                                             *
'*            Corrected error in rs232_getch() that caused function to  *
'*            never complete.                                           *
'*                                                                      *
'************************************************************************
'
'
' commandas are
' rs232_putch(ASCII value of the char to be sent)
' rs232_getch() as byte
' rs232_init()
' 
' RB0 and RB1 of PORTB are being used here for software RS232_TX and RS232_RX
'
' RB1 = output TX
' RB0 = input RX
'
' parameters are: baud rate = 2400, Data bits = 8, Patity = none, Stop bit = 1




'******************************* delays for the rs232 **************************
Dim rs232_count as byte

sub wait()
asm
{
MOVLW   d'132'
MOVWF   _rs232_count
LOOP1:
DECFSZ  _rs232_count, F
GOTO    LOOP1
return
}
end sub


sub wait_1()
asm
{
MOVLW   d'64'
MOVWF   _rs232_count
LOOP:
DECFSZ  _rs232_count, F
GOTO    LOOP
return
}
end sub





'************************ RS232 Initializing routines *****************************
'following is the procedure to intialize the pins of PORTB for rs232 port
Sub rs232_init()
trisb = ( 00000001b )    'PORTB(0) = RX;   PORTB(1) = TX   PORTB, PIN2 to PIN7 are being used for lcd
call rs232_putch(0)
End Sub
'************************ RS232 Initializing routines ends ************************



'************************ RS232 TX procedure *****************************
'following is the procedure to output a byte to the rs232 port
Sub rs232_putch(c as byte)
Dim bit_no as byte

portb.1 = 0
bit_no = 9

do while (bit_no > 0) 
   call wait()
   bit_no = bit_no - 1
   portb.1 = (c & 1)
   c = (c >> 1) | 0x80
loop



portb.1 = 1
call wait()

end sub
'************************ RS232 TX procedure ends *************************




'************************ RS232 RX procedure *****************************
'following is the function that recieves the byte from the rs232 port. The function waits till a byte is recieved
function rs232_getch() as byte
Dim bit_no as byte, byteread as byte

bit_no = 8
byteread = 0

do while (portb.0 = 1)
   _asm nop
loop
    
call wait_1()

do while (bit_no > 0)
   call wait()
   bit_no = bit_no - 1
   byteread = (byteread >> 1)
   byteread.7 = portb.0
loop

call wait()
        
rs232_getch = byteread
end function
'************************ RS232 RX procedure ends ************************

http://www.sourceboost.com

Copyright © 2006 SourceBoost Technologies