Autor | Mensaje |
---|
| Asunto: Contador PIC16F876 Publicado: 30 Mar, 2006 - 03:16 |
|
Nuevo en el Foro

Registrado: 12 Oct, 2005
Mensajes: 2
|
| Que tal, necesito un poco de ayuda para realizar un contador do 00 a 99 con un pic16f876 y que lo despliue en 2 display de 7 sementos.
Unicamente desplearlo por el puerto B
Estoy algo confundido con los tiempos, y la conversion de datos.
Les agradeceria mucho si alguien me pudiera ayudar.
Escarto |
| |
|
|
|
 |
| Asunto: RE: Contador PIC16F876 Publicado: 04 Abr, 2006 - 08:20 |
|
Experto


Registrado: 23 Oct, 2005
Mensajes: 224
Ubicación: San Juan - Argentina
|
| No se a que te refieres con los tiempos ya que un contador depende de la velocidad con que los pulsos de entrada lo disparen, en cuanto a la conversión de datos se puede hacer matemáticamente en hexadecimal. Esto depende del circuito implementado. Si puedes publica una imágen de tu diseño y yo te digo como hecer matemáticamente el programa. |
| |
|
|
|
 |
| Asunto: RE: Contador PIC16F876 Publicado: 11 May, 2006 - 01:23 |
|
Fanatico de la Electronica

Registrado: 10 May, 2006
Mensajes: 619
|
| Pasando.
El funcionamiento del timer 0 del PIC puede actuar con el oscilador interno. La frecuencia real es 1/fosc, es decir, si el cristal es de 4Mhz (tipico), la frecuencia a la entrada es de 1Mhz (si quieres visualizarlo tienes que usar el divisor interno y tambien algun divisor por software).
Para hacer que se active la interrupción con una cuenta de 100, mas o menos, cargas inicialmente el contador con 155 (el máximo es 255) y automaticamente el Timer empezará a contar ascendentemente hasta llegar a 255.
Cuando llega activa la interrupción y lo primero que tienes que hacer al entrar en la interrupción es cargar de nuevo el timer con el valor 155 (en decimal) y luego incrementar una variable (por ejemplo, conta++)
en el programa principal puedes poner PORTB=conta, pero te daria un valor en hexadecimal. Convierte primero y pasa las unidades a un display y las decenas a otro display. Ejemplo en C:
do{
RA1=1; (activa el display de unidades)
RA2=0; (desactiva el display de decenas)
PORTB=unidades;
RA1=0;
RA2=1;
PORTB=decenas;
}while(1);
Si haces esto en el programa, funcionará siempre.
Si tienes mas dudas:
pocavoz@gmail.com |
| |
|
|
|
 |
|