Hola, como dice andres puedes utilizar pic basic, en lo personal prefiero utilizar ensamblador, a pesar de conocer c, siento que tienes un mejor control sobre lo que estas haciendo y aparte es mejor el codigo en este lenguaje, el pic tiene por lo regular 35 instrucciones, asi ke no sufriras mucho, sin embargo requieres conocer los registros internos del pic, y no, no puedes programarlo en VB, lo que si puedes hacer es comunicarlo a la pc con VB, ya sea a traves del puerto serie, usb o paralelo de este.
Para utilizar el puerto paralelo ocupas conseguir los archivos inpout32.dll y guardarla en tu disco duro en la ruta C:\windows\system32, ademas de el archivo inpout32.bas que agregaras como un modulo a tu programa en VB.
Para utilizar el puerto serie solo basta con agregar el control mscomm a tu proyecto en VB y configurar las propiedades de este como son : velocidad de transmisión, numero de bits, paridad, etc.
Para usar usb, solo nesecitas averiguar en que dirección de memoria esta el puerto en el que conectaras el pic y mandar escribir el dato a esa dirección.
Si gustas bajar los compiladores o incluso ejemplos de puerto serie y/o paralelo checa esta pagina www.itson.mx/die/eromero ahi esta el codigo explicado y donde van los archivos tano para el serie como para el paralelo que tuve la oportunidad de hacer a manera de servicio social.
Espero te sirva, incluso tengo un programa en ensamblador para el PIC que comunico con mi PC pero es via serie y creo que la mejor manera de realizar la comunicacion en tu caso seria por el puerto paralelo, por la recolección de datos que hace el PIC en tu caso, te anexo el codigo que utilice por si decides hacerlo via puerto serie, aunque te recomiendo uses el puerto serie. Espero te ayude a darte una iea el codigo.
Anexo el codigo del PIC
LIST P=16F874A
#INCLUDE "P16F874A.inc"
ERRORLEVEL 0,-302
CBLOCK 0X20
DATO
ENDC
ORG 0x00
GOTO INICIO
ORG 0X30
INICIO:
CLRW ;LIMPIAR W
MOVWF DATO ;LIMPIO LA VARIABLE DATO
BCF STATUS,RP0 ;SELECCIONO EL BANCO 0
BSF RCSTA,SPEN ;PONE BIT SPEND =1 (HABILITA PUERTO SERIE)
BSF RCSTA,CREN ;HABILITA LA RECEPCION
BSF STATUS,RP0 ;SELECCIONO EL BANCO 1
MOVLW 0X19 ;VALOR PARA 9600 BAUDIOS
MOVWF SPBRG ;CONFIGURA A 9600 BAUDIOS
MOVLW 0XA4 ;CSRC/TXEN (RELOJ INTERNO, 8 BITS MODO ASINCRONO, ALTA VELOCIDAD)
MOVWF TXSTA ;ESCRIBE EL CONTROL DE REGISTRO DE TRANSMISIÓN
BCF STATUS,RP0 ;SELECIONO EL BANCO 0
MOVLW 0X44 ;VALOR PARA LA ACTIVACIÓN
MOVWF DATO ;GUARDO EL VALOR DE LA ACTIVACIÓN EN DATO
CLRF PORTB ;INICIALIZO PUERTO C A 0
BSF STATUS,RP0 ;SELECCIONO EL BANCO 1
MOVLW 0X00 ;VALOR USADO PARA INICIALIZAR LA DIRECCIÓN DE LOS DATOS
MOVWF TRISB ;CONFIGURO TODO EL PUERTO COMO SALIDA
BSF STATUS,RP0 ;SELECCIONO EL BANCO 1
CICLO: CALL RECIBE ;RECIBE UN CARACTER DEL PUERTO SERIE
SUBWF DATO,W ;COMPARA EL CODIGO RECIBIDO
BTFSS STATUS,Z ;CHECA SI ES CORRECTO
GOTO CICLO ;NO ES CORRECTO, VOLVER A CHECAR EL PUERTO SERIE
CALL CHECA ;SI ES CORRECTO, VERIFICA ESTADO DEL PUERTO C
GOTO CICLO
RECIBE: BCF STATUS,RP0 ;SELECCIONA EL BANCO 0
RECIB1: BTFSS PIR1,RCIF ;CHECA EL BUFFER DE RECPCION
GOTO RECIB1 ;SI NO HAY DATO, ESPERA
MOVF RCREG,W ;SI HAY DATO, LEERLO
BCF PIR1,RCIF ;LIMPIA LA BANDERA DE INTERRUPCIÓN
RETURN
CHECA: BTFSS PORTB,1 ;VERIFICA SI EL PUERTO C ESTA ACTIVO
GOTO ACTIV ;DE NO ESTARLO, LO ACTIVA
BCF PORTB,1 ;SI LO ESTA, DESACTIVARLO
RETURN ;REGRESO A CICLO
ACTIV: BCF STATUS,RP0 ;SELECCIONO EL BANCO 0
BSF PORTB,1 ;ACTIVO EL BIT 0 DEL PUERTO C
GOTO CICLO
END
Lo que hace es verificar que dato se recibe por el puerto serie del PIC y si es igual manda una señal al bit 1 del puerto b.