Siguenos en ...

Google+facebooktwitter

youtubepinterest RSS aquihayapuntes

Últimos Tutoriales

Licencia

Creative Commons

 

Todo el contenido de este sitio está bajo una licencia de Creative Commons

 

Contador de 0 a 10

Ejemplo de contador de 0 a 10 con dos funciones: manual y automático.

 

Esquema:

 

Contador de 0 a 10

 

Código fuente:

/********* Contador Binario de 1 al 10, Visualizado en 4 LEDs ************ 
         Incluye Boton para Incrementar y otro para Decrementar 
            Y un selector de conteo Manual o Automatico                 */ 
 
#Include <16F84A.h>                          //Define el Pic a usar 
#Use delay(Clock=4000000)                    //Define la frecuencia de reloj 
#Fuses XT,NOWDT,NOPUT,NOPROTECT              //Define los fusibles activos 
#Byte status = 0x03                          //Direccion del registro STATUS 
#Byte port_b = 0x06                          //Direccion del registro PORTB 
#Use fast_io(B)                              //Codigo mas eficiente 
 
//INICIA CUERPO DEL PROGRAMA 
void main(){                                  
   set_tris_b (0xF0);                        //RB7-RB4 salidas, RB3-RB0 entradas  
   port_b = 0x00;                               //Limpia el Puerto B 
   signed int contador=0x00;                 //Contador definido con signo 
    
   while (True){                             //Inicia ciclo infinito 
      while (input(PIN_B4)){                 //Mientras esté activo el modo auto 
         port_b = contador;                  //Muestra el valor de contador en PORTB 
         ++contador;                         //Incrementa el contador 
         delay_ms(500);                      //Retardo de 500ms 
         if (contador>10)                    //Si elcontador es mayor que 10 
            contador = 0x00;                 //Entonces vuelve a valer 0 
      }                                      //Fin del ciclo modo auto 
       
      while (input (PIN_B5)){                //Mientras esté en modo Manual 
         if (bit_test(port_b,6)==1){         //Si se presiona el boton de SUBE 
            ++contador;                      //Incrementa en 1 el contador 
            if (contador>10){                //Si contador vale mas de 10 
               contador = 10;}               //Se fija su valor en 10 
            port_b = contador;               //Pone el valor de contador en PORTB 
            delay_ms(500);                   //Retardo de 500ms 
         }                                   //Fin del ciclo SUBE 
          
         if (bit_test (port_b,7)==1){        //Si se presiona el boton de BAJA 
            --contador;                      //Decrementa en 1 el contador 
            if (contador<0){                 //Si contador es menor a 0 
               contador = 0;}                //Se fija su valor en 0 
            port_b = contador;               //Pone el valor de contador en PORTB 
            delay_ms(500);                   //Retardo de 500ms 
         }                                   //Fin del ciclo BAJA 
      }                                      //Fin del ciclo MANUAL 
   }                                         //Fin del ciclo infinito 
}                                            //Fin de programa
 

 

El .DNS lo tenéis en el siguiente hilo del foro.

 

Saludos

 

© 2007-2017 AquiHayapuntes.com