By the way , the LCD is there basically to tell me what is goign on .
anyway , here is the complete program :
sending:

' Picbasic Pro program to read DS1820 1-wire temperature sensor
' and display temperature on LCD
' FOR SENDING SERIAL
INCLUDE "modedefs.bas"
DEFINE OSC 20 'use external 20mhz crystal

CMCON = 7 : ANSEL = 0 : ADCON1 = 7
' Define LCD pins
DEFINE LCD_DREG PORTA ' Set LCD Data port
DEFINE LCD_DBIT 0 ' Set starting Data bit (0 or 4) if 4-bit bus

DEFINE LCD_RSREG PORTB ' Set LCD Register Select port
DEFINE LCD_RSBIT 1 ' Set LCD Register Select bit

DEFINE LCD_EREG PORTB ' Set LCD Enable port
DEFINE LCD_EBIT 0 ' Set LCD Enable bit

DEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits)
DEFINE LCD_LINES 2 ' Set number of lines on LCD

TRISB.2 =0
TRISB.3 =1
DQ var PortB.4
temp var word
'27
temperature var word
count_remain var byte
count_per_c var byte
counter var byte
tempc var word
dataout var word
dataout2 var word
datain var word
array var word
encoded1 var word
encoded2 var word
encoded22 var word
encoded11 var word


loop:
owout DQ,1,[$cc]
owout DQ,0,[$44]
Pause 500
owout DQ,1,[$cc]
owout DQ,0,[$be]
owin DQ, 0, [temperature.LOwBYTE, temperature.Highbyte, Skip 4, count_remain, count_per_c]
'50
temperature = ((( temperature >> 1) *100)- 25) + (((count_per_c - count_remain) * 100) / count_per_c)
tempc = (((temperature *9) / 5)+3200)
dataout = temperature / 100
dataout2 = temperature

encoded1 =temperature.LowBYTE
encoded2 =temperature.HighBYTE

For counter=0 TO 7
IF encoded1.0[counter]=0 Then
encoded11.0[counter*2]=0
encoded11.0[counter*2+1]=1
Else
encoded11.0[counter*2]=1
encoded11.0[counter*2+1]=0
EndIF
Next counter

For counter=0 TO 7
IF encoded2.0[counter]=0 Then
encoded22.0[counter*2]=0
encoded22.0[counter*2+1]=1
Else
encoded22.0[counter*2]=1
encoded22.0[counter*2+1]=0
EndIF
Next counter
lcdout $FE,1
LCDOUT BIN temperature , ".", dec (temperature / 10)," ",$DF,"C"
lcdout $FE,$C0, bin encoded22.HighBYTE , ".", bin encoded2," ",$DF,"F"
serout portb.2, n2400, [encoded22.HighBYTE, encoded22.LowBYTE, encoded11.HighBYTE, encoded11.LowBYTE ]
goto loop

End


AND RECEIVING:
' Picbasic Pro program to read DS1820 1-wire temperature sensor
' and display temperature on LCD
' FOR Receiving SERIAL
INCLUDE "modedefs.bas"
DEFINE OSC 20 'use external 20mhz crystal

CMCON = 7 : ANSEL = 0 : ADCON1 = 7
' Define LCD pins
DEFINE LCD_DREG PORTA ' Set LCD Data port
DEFINE LCD_DBIT 0 ' Set starting Data bit (0 or 4) if 4-bit bus

DEFINE LCD_RSREG PORTB ' Set LCD Register Select port
DEFINE LCD_RSBIT 1 ' Set LCD Register Select bit

DEFINE LCD_EREG PORTB ' Set LCD Enable port
DEFINE LCD_EBIT 0 ' Set LCD Enable bit

DEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits)
DEFINE LCD_LINES 2 ' Set number of lines on LCD
'22
datain2 var word
datain var word
dataout var word
counter var byte
temperature var word
encoded1 var word
encoded2 var word
encoded11 var word
encoded22 var word

pause 500

loop:
'36
serin portB.3, n2400,[ encoded22.HighBYTE, encoded22.LowBYTE, encoded11.HighBYTE, encoded11.LowBYTE]

lcdout $FE,1
LCDOUT "datain: ", BIN 5
lcdout $FE,$C0, "datain2: ", bin encoded22.HighBYTE , ".", dec datain2," ",$DF,"C"
Pause 500

For counter=0 TO 7 'decoding
encoded1.0[counter]=encoded11.0[counter*2]
encoded2.0[counter]=encoded22.0[counter*2]
Next counter

temperature= encoded1 ' putting back together as the original temperature
For counter=0 TO 7
temperature.0[counter+8]=encoded2.0[counter+8]
Next counter

goto loop

End