'****************************************************************
' *
' Filename: GPS_LED_lib.bas *
' Date: 11/20/2008 *
' File Version: 0.01 *
' *
' Author: Peter Putnam *
' email: peter@ni6e.com *
' *
' Based on work of Punerjot Singh Mangat *
' *
'****************************************************************
'
' commands are:
' rs232_putch(ASCII value of char to be sent)
' rs232_getch() as byte
'
' GPIO.5 = RX input
' GPIO.4 = TX output
'
' Baud rate = 4800, Data bits = 8, Parity = none, Stop bits = 1
'******************************* delays for RS232 ******************************
'Wait() sets bit time
' One bit is 208 uSec at 4800 bps
' One instruction is 1 uSec using 4.0 MHz processor clock
' Therefore, the bit time loop must use 208 instructions
'Wait_1() delays a half-bit time to sample at the middle of a bit
Dim rs232_count as byte
sub wait()
asm
{
MOVLW d'65'
MOVWF _rs232_count
LOOP1:
DECFSZ _rs232_count, F
GOTO LOOP1
return
}
end sub
sub wait_1()
asm
{
MOVLW d'33'
MOVWF _rs232_count
LOOP:
DECFSZ _rs232_count, F
GOTO LOOP
return
}
end sub
'**************************** delays for RS232 end *****************************
'************************ RS232 RX procedure ***********************************
'following is the function that receives the byte from the RS232 port.
' The function waits till a byte is received
function rs232_getch() as byte
Dim bit_no as byte, byteread as byte
bit_no = 8
byteread = 0
do while (gpio.5 = 1)
_asm nop
loop
' 'start bit detected
call wait_1() 'delay 1/2 bit time
' ' to sample mid-bit
do while (bit_no > 0)
call wait()
bit_no = bit_no - 1
byteread = (byteread >> 1)
byteread.7 = gpio.5
loop
call wait()
rs232_getch = byteread
end function
'************************ RS232 RX procedure 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
gpio.4 = 0
bit_no = 9
do while (bit_no > 0)
call wait()
bit_no = bit_no - 1
gpio.4 = (c & 1)
c = (c >> 1) | 0x80
loop
gpio.4 = 1
call wait()
end sub
'************************ RS232 TX procedure ends ******************************