Hola, soy bastante nuevo en esto, manejo bastante bien el C / C++ pero se me dio por largarme en Basic para programar los pic. Hice varios prototipos con el 16F84 y anda todo OK, pero ahora necesito tomar la frecuencia de una señal de entre 10 Hz y 50 Hz y lamentablemte no puedo mostrarla. El PIC lo uso como contador de pulsos y ademas para habilitar la multiplexacion de los displays 7 segmentos. Uso un CD4511 para convertir BCD a 7 segmentos. Un BC547 para habilitar los 2 display catodo comun. El problema que armandolo asi y programando asi, en el display solo veo la informacion entrecortada, solo 12mS y luego tengo que esperar a que el pic vuelva a contar los pulsos por 60 mS mas. Necesito si alguien me puede ayudar con una rutina que consuma menos tiempo de muestreo, o que en lugar de usar count, mida el tiempo entre pulso y pulso y determine el periodo del mismo para invertirlo y obtener la frecuancia. Es para medir las rpm de un motor a explosion (de 600 RPM a 2500 aprox.)
rpm var word
TRISA = %00000000 ´porta salida
TRISB = %11111100 ´portb 0 y 1 salida
inicio:
count portb.2,60,rpm ´contar del portb.2 los pulsos en 120ms poner en rpm
high portb.0 ´habilitar transistor de la unidad de 7 segmentos
porta = rpm dig 0 ´colocar primer digito en bus del CD 4511
pause 6 ´esperar que los leds del 7 segmento reaccionen
low portb.0 ´apagar 7 segmento
high portb.1 ´habilitar transistor de la decena de 7 segmentos
porta = rpm dig 1 ´colocar primer digito en bus del CD 4511
pause 6 ´esperar que los leds del 7 segmento reaccionen
low portb.1 ´apagar 7 segmento
goto inicio
end