En este sencillo ejemplo, veremos como podemos ver e interactuar con los distintos bits de una cadena de mensaje con formato serial. Solo imaginemos que un microcontrolador es el que sensa, y el otro el que recepciona el dato y procesa la informacion...
Para darle mas realismo, supongamos que el bit S[2], si su valor es "1", significa que el sensor esta desconectado e informara el error... para simular el archivo en proteus, seleccionen un simple microcontrolador 16F628 y conecten en el puerto A.0 la herramienta hiperterminal en el pin RX; El pin TX lo conectamos en el puerto B.1...
include "modedefs.bas"
DEFINE OSC 4
CMCON = 7
TRISA = 0
TRISB = 255
i var byte
bData var Byte
S var byte[21]
SYMBOL LCD = PORTA.0
SYMBOL RXD = PORTB.1
INICIO:
serout lcd,T9600,[$FE,1]
SEROUT LCD,T9600,[$FE,1] 'Limpiar el LCD
SEROUT LCD,T9600,[$FE,"RECEPCION SERIN DE"] 'Primer línea
SEROUT LCD,T9600,[$FE,$C0,"CADENAS EN PICBASIC"] 'Segunda línea
pause 500
CLEAR
Modem:
serin RXD,T2400,5000,Modem,[],bdata ' Recibir cualquier dato y ponerlo en bData
i=i+1 ' Incrementar bData
s[i]=bdata ' S[X] contendra el dato de bData
IF bdata=13 then ' Si se recibe un retorno de carro,
serout lcd,T9600,[$FE,2] ' poner el cursor al inicio de la línea 2
FOR I=1 TO 21 ' Bucle hasta 21 para borrar todo el array S[X]
S[I]=$20
NEXT I
I=0 ' Reiniciar i
ENDIF
IF I THEN ' Mostrar los datos del array S[X]
serout lcd,T9600,[$FE,1]
serouT lcd,T9600,[$FE,"Virtual Terminal"]
serout lcd,T9600,_ [$FE,$C0,S[1],s[2],S[3],s[4],S[5],s[6],S[7],s[8],S[9],s[10],S[11],s[12],S[13],s[14],S[15],s[16],S[17],s[18],S[19],s[20]]
endif
IF I>=20 THEN
pause 2000
if s[2] = 1 then serouT lcd,T9600,[$FE,"Problema con SENSOR"]
pause 1500
else
I=0
goto Modem:
end