kevin2458

MCE_Lester_1

Nov 18th, 2016
161
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define BUTTON_1_2_PRESSED 0
  2. #define BUTTON_1_PRESSED 4
  3. #define BUTTON_2_PRESSED 8
  4.  
  5. #define LED_1  LATA.F0
  6. #define LED_2  LATA.F1
  7.  
  8. #define EVERLOOP while (1)
  9.  
  10. #define FALSE 0
  11. #define TRUE 1
  12.  
  13. #define STATE_LOW 0
  14. #define STATE_HIGH 1
  15.  
  16. unsigned int _FreqLED;
  17.  
  18. unsigned int _ButtonPressed;
  19.  
  20. unsigned int _LedSelected;
  21.  
  22. unsigned int _PORTDValue;
  23.  
  24. void initMCU() {
  25.   ANCON0 = ANCON1 = 0;
  26.  
  27.   TRISA = 0;
  28.  
  29.   TRISD = 12;
  30.  
  31.   LATA = LATD = 0;
  32.  
  33.   PORTA = PORTD = 0;
  34.  
  35.   _FreqLED = 0;
  36.  
  37.   _LedSelected = 1;
  38. }
  39.  
  40. void delay(const unsigned int duration) {
  41.   unsigned int ms = 0;
  42.  
  43.   EVERLOOP {
  44.     delay_ms(1);
  45.    
  46.     ms++;
  47.    
  48.     if (PORTD != 12 || ms == duration) {
  49.       break;
  50.     }
  51.   }
  52. }
  53.  
  54. void oscLed1() {
  55.   switch (_FreqLED) {
  56.     case 0:
  57.       LED_1 = STATE_LOW;
  58.       break;
  59.  
  60.     case 1:
  61.       LED_1 = STATE_HIGH;
  62.      
  63.       delay(2000);
  64.  
  65.       LED_1 = STATE_LOW;
  66.      
  67.       delay(2000);
  68.       break;
  69.      
  70.     case 2:
  71.       LED_1 = STATE_LOW;
  72.  
  73.       delay(1500);
  74.  
  75.       LED_1 = STATE_HIGH;
  76.  
  77.       delay(1500);
  78.       break;
  79.      
  80.     case 3:
  81.       LED_1 = STATE_HIGH;
  82.  
  83.       delay(1000);
  84.  
  85.       LED_1 = STATE_LOW;
  86.  
  87.       delay(1000);
  88.       break;
  89.      
  90.     case 4:
  91.       LED_1 = STATE_LOW;
  92.  
  93.       delay(750);
  94.  
  95.       LED_1 = STATE_HIGH;
  96.  
  97.       delay(750);
  98.       break;
  99.      
  100.     case 5:
  101.       LED_1 = STATE_HIGH;
  102.  
  103.       delay(500);
  104.  
  105.       LED_1 = STATE_LOW;
  106.  
  107.       delay(500);
  108.       break;
  109.      
  110.     default:
  111.       break;
  112.   }
  113. }
  114.  
  115. void oscLed2() {
  116.   switch (_FreqLED) {
  117.     case 0:
  118.       LED_2 = STATE_LOW;
  119.       break;
  120.  
  121.     case 1:
  122.       LED_2 = STATE_HIGH;
  123.  
  124.       delay(2000);
  125.  
  126.       LED_2 = STATE_LOW;
  127.  
  128.       delay(2000);
  129.       break;
  130.  
  131.     case 2:
  132.       LED_2 = STATE_LOW;
  133.  
  134.       delay(1500);
  135.  
  136.       LED_2 = STATE_HIGH;
  137.  
  138.       delay(1500);
  139.       break;
  140.  
  141.     case 3:
  142.       LED_2 = STATE_HIGH;
  143.  
  144.       delay(1000);
  145.  
  146.       LED_2 = STATE_LOW;
  147.  
  148.       delay(1000);
  149.       break;
  150.  
  151.     case 4:
  152.       LED_2 = STATE_LOW;
  153.  
  154.       delay(750);
  155.  
  156.       LED_2 = STATE_HIGH;
  157.  
  158.       delay(750);
  159.       break;
  160.  
  161.     case 5:
  162.       LED_2 = STATE_HIGH;
  163.  
  164.       delay(500);
  165.  
  166.       LED_2 = STATE_LOW;
  167.  
  168.       delay(500);
  169.       break;
  170.  
  171.     default:
  172.       break;
  173.   }
  174. }
  175.  
  176. void main() {
  177.   initMCU();
  178.  
  179.   EVERLOOP {
  180.     if (_LedSelected == 1) {
  181.       oscLed1();
  182.     } else if (_LedSelected == 2) {
  183.       oscLed2();
  184.     }
  185.  
  186.     switch (PORTD) {
  187.       case BUTTON_1_PRESSED:
  188.         if (_ButtonPressed == FALSE) {
  189.           _ButtonPressed = TRUE;
  190.        
  191.           if (_LedSelected == 1) {
  192.             if (_FreqLED == 5) {
  193.               _FreqLED = 0;
  194.             } else {
  195.               _FreqLED++;
  196.             }
  197.           } else {
  198.             _LedSelected = 1;
  199.            
  200.             LED_2 = STATE_LOW;
  201.           }
  202.         }
  203.         break;
  204.        
  205.       case BUTTON_2_PRESSED:
  206.         if (_ButtonPressed == FALSE) {
  207.           _ButtonPressed = TRUE;
  208.  
  209.           if (_LedSelected == 2) {
  210.             if (_FreqLED == 5) {
  211.               _FreqLED = 0;
  212.             } else {
  213.               _FreqLED++;
  214.             }
  215.           } else {
  216.             _LedSelected = 2;
  217.            
  218.             LED_1 = STATE_LOW;
  219.           }
  220.         }
  221.         break;
  222.        
  223.       case 12:
  224.         _ButtonPressed = FALSE;
  225.         break;
  226.        
  227.       default:
  228.         break;
  229.     }
  230.   }
  231. }
RAW Paste Data