Si es un sistema de control y las muestras que queres tomar se deben actualizar a medida que van sucediendo, entonces:
- Crea una interrupcion con un timer de 10ms.
- Crea un array de 100 lugares de 8 bits, suponete valores[100]
- Crea una variable de 8bits que funcione como indice.
En el 16F887 estarias ocupando aproximadamente 1/3 de la memoria RAM en eso. en el 18F4550 tendrias de sobra espacio.
Luego es ir guardando y mantener un indice que te diga donde estas guardando.
#INT_TMR0
void int_tim(void)
{
valor[i] = dato;
i++;
}
Si tenes que guardar si o si las muestras y que no se borren cuando se apague el micro aca si vas a tener que usar la EEPROM. Sino no te conviene, por que la EEPROM tiene una cantidad de escrituras y vas a quemarla en un ratito.
Luego si queres ahorrar espacio, como son 2 bits, podrias hacer un arreglo para que en una variable de 8bits entren 4 muestras de 2 bits. y eso reduciria la cantidad de bits necesarios a solo 25. Pero complica un poquito mas la logica de guardalos ( no demasiado ).
Lo que planteas pienso que es muy basico en C, y luego encima tenes que realizar la parte de control lo cual no se como vas a hacer si esto ya se te complica. Pero obviamente nadie nacio sabiendo y todo se aprende.