Está en la página 1de 3

PROGRAMA CONTADOR DEL 0 AL 93

#include <16F84A.h> // incluye la libreria del modelo del pic 16F84A

#fuses XT, NOPROTECT, NOPUT, NOWDT // configura los fusibles, habilita el oscilador externo tipo XT,

// deshabilita la proteccion del codigo del pic, deshabilita la

// temporizacin cuando comienza su tarea el microcontrolador

// deshabilita el Watch Dog

#use delay (clock = 4000000) // incluye la libreria de retardos con una frecuencia del clock de

// 4 Mhz

#use standard_io(B) // configuramos el puerto B por medio de directivas (como

// entrada o salida)

#use standard_io(A) // configuramos el puerto A por medio de directivas (como

// entrada o salida)

#byte porta = 05 // se asigna a la variable porta la direccin 05

void main() // cabecera principal del programa

{ // se inicia el programa principal

byte const display[10] = {0,1,2,3,4,5,6,7,8,9}; // se le asigna 10 valores en forma de byte a la variable display

// que son valores constates del 0 al 9

byte valor = 0; // se le asigna el valor de 0 en forma de byte a la variable

// valor

byte valor1 = 0; // se le asigna el valor de 0 en forma de byte a la variable

// valor1

while(1) // mientras la condicion sea verdadera realiza el siguiente

// programa

{ // inicio del programa del contador

if(input(PIN_A0)==0) // pregunta si la entrada del pin 0 del Puerto B esta en 0 logico?

{ // si, realizar las siguientes instrucciones


output_high(PIN_A1); // habilita el display de las unidades

output_low(PIN_A2); // deshabilita el display de las decenas

output_B(display[valor]); // muestra el valor de la variable valor en el display de las

// unidades

delay_ms(5); // llama a la libreria de retardos para un retardo de 5ms

output_low(PIN_A1); // deshabilita el display de las unidades

output_high(PIN_A2); // habilita el display de las decenas

output_B(display[valor1]); // muestra el valor de la variable valor en el display de las

// decenas

delay_ms(5); // llama a la libreria de retardos para un retardo de 5ms

} // cierra el programa de instrucciones mientras el pulsador esta

// en 0 logico

Else // no, entonces se realiza las siguientes instrucciones

{ // realizar las siguientes instrucciones

valor++; // incrementa en uno la variable valor

if (valor>9) // si valor es mayor a nueve

{ // realizar lo siguiente

valor = 0; // valor igual a 0

valor1++; // incrementar en 1 la variable valor1

} // cierra las instrucciones para el limite de unidades

if (valor1>=9) // si valor1 es mayor o igual que 9

{ // realizar lo siguiente

if(valor>3) // si valor es mayor a 3 para que sea 93 el numero limite

{valor = 0; // valor es igual a 0

valor1 = 0; // valor1 es igual a 0

} // cerramos las instrucciones para resetear a 0 cuando llega a


// 93 el contador

} // cerramos las instrucciones para el limite de las decenas

delay_ms(5); // llama a la libreria de retardos para un retardo de 5ms

do // una vez configurado los nuevos valores mediante el pulso

// entonces se realiza lo siguiente

{ output_high(PIN_A1); // habilita el display de las unidades

output_low(PIN_A2); // deshabilita el display de las decenas

output_B(display[valor]); // muestra el valor de la variable valor en el display de las

// unidades

delay_ms(5); // llama a la libreria de retardos para un retardo de 5ms

output_low(PIN_A1); // deshabilita el display de las unidades

output_high(PIN_A2); // habilita el display de las decenas

output_B(display[valor1]); // muestra el valor de la variable valor en el display de las

// decenas

delay_ms(5); // llama a la libreria de retardos para un retardo de 5ms

}while(bit_test(porta,0)==1); // mientras el bit 0 del Puerto A este en 1 logico o mientras el

// pulsador este presionado

} // cierre de las instrucciones cuando el pulsador esta en 1

} // cierre del programa del contador

} // cierre del programa principal