A continuación se muestra el diagrama de conexiones en el simulador ISIS de PROTEUS
Diagrama de conexiones. (clic en la imagen para ampliar)
Herramienta en mikroc en este caso se seleeciona un CERO y para un display de catodo común, se coloco en la funcion el valor de 0x3F en hexadecimal.
Seven Segment Editor.
Código empleado en el programa.
//------------------------------------------------------------
//Declaracnion de funciones(Mostradas al final del programa)
void inicio();
char Display(char digito);
char contador=0, estado=1; //contadores usados
void main() {
inicio();
while(1){
if(Button(&PORTB,0,1,0)) estado =0; /*Verifica si se pulso
el boton por el puerto RB0 con 1 ms de retardo, y se pregunta por un
nivel bajo(0) debido a la forma en la que esta conectada el boton
(siempre a un nivel logico 1 con la resistencia) */
if(estado==0 && Button(&PORTB,0,1,1)){ /*El programa no incremen-
tara el contador sino hasta que se suelte el pulsador(pregunta
nuevamente por el nivel logico 1)*/
contador++; // incrementa contador
if(contador>9) contador=0; // resetea contador
estado =1; // regresa el estado
}
PORTD = Display(contador); //funcion para crear los
//numeros
}
}
//Funcion de configuracion inicial del microcontrolador
void inicio(){
ANSEL = 0x00; // puertos E/S digital
ANSELH = 0x00;
C1ON_bit = 0x00; // se apagan los comparadores
C2ON_bit = 0x00;
PORTB = 0x00; // inicialización de puertos.
PORTD = 0x00;
TRISB = 0xFF; // puerto B como entrada
TRISD = 0x00; // puerto D como salida
}
//Para un display de catodo comun... se puede apoyar de la herramienta
// en mikroc (Seven Segment Editor) de la barra de herramientas Tools para la
//verificacion de los valores
char Display(char digito){
switch(digito){
case 0: return 0x3F;
case 1: return 0x06;
case 2: return 0x5B;
case 3: return 0x4F;
case 4: return 0x66;
case 5: return 0x6D;
case 6: return 0x7D;
case 7: return 0x07;
case 8: return 0x7F;
case 9: return 0x67;
}
}
void inicio();
char Display(char digito);
char contador=0, estado=1; //contadores usados
void main() {
inicio();
while(1){
if(Button(&PORTB,0,1,0)) estado =0; /*Verifica si se pulso
el boton por el puerto RB0 con 1 ms de retardo, y se pregunta por un
nivel bajo(0) debido a la forma en la que esta conectada el boton
(siempre a un nivel logico 1 con la resistencia) */
if(estado==0 && Button(&PORTB,0,1,1)){ /*El programa no incremen-
tara el contador sino hasta que se suelte el pulsador(pregunta
nuevamente por el nivel logico 1)*/
contador++; // incrementa contador
if(contador>9) contador=0; // resetea contador
estado =1; // regresa el estado
}
PORTD = Display(contador); //funcion para crear los
//numeros
}
}
//Funcion de configuracion inicial del microcontrolador
void inicio(){
ANSEL = 0x00; // puertos E/S digital
ANSELH = 0x00;
C1ON_bit = 0x00; // se apagan los comparadores
C2ON_bit = 0x00;
PORTB = 0x00; // inicialización de puertos.
PORTD = 0x00;
TRISB = 0xFF; // puerto B como entrada
TRISD = 0x00; // puerto D como salida
}
//Para un display de catodo comun... se puede apoyar de la herramienta
// en mikroc (Seven Segment Editor) de la barra de herramientas Tools para la
//verificacion de los valores
char Display(char digito){
switch(digito){
case 0: return 0x3F;
case 1: return 0x06;
case 2: return 0x5B;
case 3: return 0x4F;
case 4: return 0x66;
case 5: return 0x6D;
case 6: return 0x7D;
case 7: return 0x07;
case 8: return 0x7F;
case 9: return 0x67;
}
}
//------------------------------------------------------------
A continuación se adjuntan los archivos para descargar el proyecto, el
archivo .hex para el microcontrolador y la simulacion en ISIS.