Hi guys,
I am using picbasic pro and here is my code. I want to receive a data in a certain time(timeout). Is there any other way instead of using timeout in serin,because i heard that if the line is noisy it won't come out from the time out.
'****************************************************************
@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _PWRTE_OFF & _BODEN_OFF
INCLUDE "modedefs.bas" ' Include serial modes
OPTION_REG=%10000000
TRISIO = %00000011
ANSEL=$00000010 'GP1= ANALOG THEOTHERS DIGITAL
' INTCON = $90 'PULL-UPS DISABLE AND,INT ACCEPTED (10010000)
Define Osc 4
DEFINE ADC_BITS 8 'DEFINE THAT WE ARE USING 8_BIT CONVERSION
DEFINE ADC_CLOCK 3 'DEFINE THAT A/D CLOCK SOURCE IS RC(ADCON0_7=1,ADCON0_6=1)
CHKSUM VAR BYTE
DESTINATION VAR BYTE
ORIGIN VAR BYTE
ORIG VAR BYTE
DEST VAR BYTE
DATIN VAR GPIO.0
DATOUT VAR GPIO.2
DATSHOW VAR GPIO.4
NODENUM VAR BYTE
DAT VAR BYTE
SAVE VAR BYTE
TEMP VAR BYTE
SYNCH CON "~" ' 01111110 synch byte
PREAMBLE con "A"
CHECKSUM CON "5"
'****************************************************
asm
bsf STATUS, RP0
call 3FFh
movwf OSCCAL
bcf STATUS, RP0
endasm
'*****************************************************
NODENUM=1
pause 500
MAIN:
IF GPIO.5=0 THEN MYINT
serin DATIN,N2400,100,MAIN,[PREAMBLE],DAT,ORIGIN,SAVE,CHKSUM
IF CHKSUM=5 THEN
goto loop
endif
MYINT:
ADCIN 1,TEMP
SEROUT DATOUT,N2400,["AAAAAAA","55555",SYNCH,PREAMBLE,32,NODENUM,#TEMP,5]
goto main
END
loop:
SEROUT DATSHOW,N2400,[SAVE ]
GOTO MAIN