Advertisement
hidromotic

Mapeo_contador_PIC

May 20th, 2020
1,454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.44 KB | None | 0 0
  1. /*
  2.  * Ejercicio resuelto en clase de Computación II
  3.  * Fecha: 20/05/20
  4.  * by Alejo S. Giles
  5.  *
  6. Mapeo de contador: Mapear en salidas, los 4 (cuatro) bits menos                      
  7. significativos (nibble bajo) de una variable contador. El contador deberá                    
  8. incrementarse automáticamente cada un segundo, y reiniciase con cada                  
  9. flanco ascendente en la entrada.
  10.  *
  11.  * https://pastebin.com/9pRMtSJh
  12.  */
  13. #include "config.h"
  14. //BLINK
  15. #define CONFIGURAR_LED_TEST     TRISD1=0
  16. #define ENCENDER_LED_TEST       LD1=1
  17. #define APAGAR_LED_TEST         LD1=0
  18.  
  19. //Para interactuar con las SALIDAS, utilizar:
  20. #define CONFIGURAR_SALIDAS      TRISB=0
  21. #define ACTIVAR_SALIDA0         LB0=1
  22. #define DESACTIVAR_SALIDA0      LB0=0
  23. #define ACTIVAR_SALIDA1         LB1=1
  24. #define DESACTIVAR_SALIDA1      LB1=0
  25. #define ACTIVAR_SALIDA2         LB2=1
  26. #define DESACTIVAR_SALIDA2      LB2=0
  27. #define ACTIVAR_SALIDA3         LB3=1
  28. #define DESACTIVAR_SALIDA3      LB3=0
  29.  
  30.  
  31. //Para interactuar con la ENTRADA, utilizar:
  32. #define CONFIGURAR_ENTRADA  TRISA0=1
  33. #define ENTRADA_ACTIVADA    RA0
  34.  
  35. void MapeoDeContador(void)
  36.     {
  37.     static unsigned char contador = 0; //0b0000 0000 0000 0000 //0x0000
  38.     static unsigned long centiseg_ant = 0;
  39.     static bit entrada_activada_ant=0;
  40.  
  41.     //Boton de reset
  42.     if(ENTRADA_ACTIVADA != entrada_activada_ant)
  43.         {
  44.         entrada_activada_ant= ENTRADA_ACTIVADA;
  45.         //Si detectó un flanco ascendente
  46.         if(ENTRADA_ACTIVADA) contador=0;
  47.         }
  48.    
  49.     //Incremento del contador
  50.     if (centiseg - centiseg_ant < 3) return;
  51.     centiseg_ant = centiseg;
  52.  
  53.     contador++;
  54.    
  55.     //Queremos copiar los cuatro bits menos significativos del contador, en PORTB
  56.    
  57.     //Mapeo del nibble bajo (4 bits menos significativos)
  58.     PORTB &= 0b11110000; // "Limpiamos" los 4 bits menos significativos de PORTB
  59.     PORTB |= contador & 0x0F;   //Copiamos los 4 bits menos significatovos de contador en PORTB
  60.     }
  61.  
  62. void Blink(void)
  63.     {
  64.     static unsigned long centiseg_ant=0;
  65.     static bit led=0;
  66.    
  67.     if((centiseg - centiseg_ant) < 5) return;
  68.     centiseg_ant=centiseg;
  69.    
  70.     led=!led;
  71.    
  72.     if(led) ENCENDER_LED_TEST;
  73.     else    APAGAR_LED_TEST;
  74.     }
  75.  
  76. void main(void)
  77.     {
  78.     setup();
  79.     CONFIGURAR_SALIDAS;
  80.     CONFIGURAR_ENTRADA;
  81.     CONFIGURAR_LED_TEST;
  82.     APAGAR_LED_TEST;
  83.    
  84.     while (1)
  85.         {
  86.         Blink();
  87.         MapeoDeContador();
  88.         }
  89.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement