Con 200 bits quiero pensar que te refieres a 200 cambios de estado. Si lo que quieres es muestrear la señal, primero deberas de saber la frecuencia a la que saldra la señal. Luego, lee el pin donde recibiras esa señal a 10 veces minimo esa frecuencia. Eso lo puedes hacer con un timer. Cuando entres en la interrupcion del timer, seria algo asi:
variables globales: bit_count=0, byte_count, MUESTRAS[256] // 256*8=2048 muestras digitales
int_timer0:
temp=input(PIN_xx)
MUESTRAS[byte_count]<<1; //Movemos 1 a la izda.
MUESTRAS[byte_count]=MUESTRAS[byte_count]|temp; //Metemos temp
bit_count=bit_count+1;
if(bit_count=8)
{
bit_count=0;
byte_count=byte_count+1;
}
Luego, en el programa principal estaras esperando la señal del sensor. Cuando se active la señal del sensor:
-Desactivas la interrupcion del timer0
-Teniendo ya las variables byte_count y bit_count, haces el trabajo inverso, es decir, coges el bit, lo sacas por el puerto, mueves a la derecha (>>) el byte, sacas el bit por el puerto, bit_count=bit_count-1 , si bit_count=0 entonces byte_count=byte_count-1 y sucesivamente hasta que ambas variables sean cero.
- Cuando sean cero, activas la interrupcion y vuelta a empezar.
Ufa! Ya me ha costado escribir jajajj