kevin2458

MCE_Lester_2

Nov 18th, 2016
173
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 _FreqLed1;
  17. unsigned int _FreqLed2;
  18.  
  19. unsigned int _DelayLed1;
  20. unsigned int _DelayLed2;
  21.  
  22. unsigned int _DurationLed1;
  23. unsigned int _DurationLed2;
  24.  
  25. unsigned int _ButtonPressed1;
  26. unsigned int _ButtonPressed2;
  27.  
  28. void initMCU() {
  29.   ANCON0 = ANCON1 = 0;
  30.  
  31.   TRISA = 0;
  32.  
  33.   TRISD = 12;
  34.  
  35.   LATA = LATD = 0;
  36.  
  37.   PORTA = PORTD = 0;
  38.  
  39.   _FreqLed1 = 1;
  40.   _FreqLed2 = 1;
  41.  
  42.   _DurationLed1 = 2000;
  43.   _DurationLed2 = 2000;
  44.  
  45.   _DelayLed1 = _DurationLed1;
  46.   _DelayLed2 = _DurationLed2;
  47. }
  48.  
  49. void main() {
  50.   initMCU();
  51.  
  52.   EVERLOOP {
  53.     delay_ms(1);
  54.    
  55.     if (_FreqLed1 != 0) {
  56.       _DelayLed1--;
  57.      
  58.       if (_DelayLed1 == 0) {
  59.         LED_1 = ~LED_1;
  60.  
  61.         _DelayLed1 = _DurationLed1;
  62.       }
  63.     }
  64.    
  65.     if (_FreqLed2 != 0) {
  66.       _DelayLed2--;
  67.  
  68.       if (_DelayLed2 == 0) {
  69.         LED_2 = ~LED_2;
  70.  
  71.         _DelayLed2 = _DurationLed2;
  72.       }
  73.     }
  74.  
  75.     switch (PORTD) {
  76.       case BUTTON_1_PRESSED:
  77.         if (_ButtonPressed1 == FALSE) {
  78.           _ButtonPressed1 = TRUE;
  79.          
  80.           LED_1 = ~LED_1;
  81.          
  82.           if (_FreqLed1 == 5) {
  83.             _FreqLed1 = 0;
  84.           } else {
  85.             _FreqLed1++;
  86.           }
  87.          
  88.           switch (_FreqLed1) {
  89.             case 0:
  90.               LED_1 = STATE_LOW;
  91.            
  92.               _DurationLed1 = 0;
  93.               break;
  94.          
  95.             case 1:
  96.               _DurationLed1 = 2000;
  97.               break;
  98.              
  99.             case 2:
  100.               _DurationLed1 = 1500;
  101.               break;
  102.  
  103.             case 3:
  104.               _DurationLed1 = 1000;
  105.               break;
  106.              
  107.             case 4:
  108.               _DurationLed1 = 750;
  109.               break;
  110.              
  111.             case 5:
  112.               _DurationLed1 = 500;
  113.               break;
  114.           }
  115.          
  116.           _DelayLed1 = _DurationLed1;
  117.         }
  118.         break;
  119.        
  120.       case BUTTON_2_PRESSED:
  121.         if (_ButtonPressed2 == FALSE) {
  122.           _ButtonPressed2 = TRUE;
  123.          
  124.           LED_2 = ~LED_2;
  125.  
  126.           if (_FreqLed2 == 5) {
  127.             _FreqLed2 = 0;
  128.           } else {
  129.             _FreqLed2++;
  130.           }
  131.  
  132.           switch (_FreqLed2) {
  133.             case 0:
  134.               LED_2 = STATE_LOW;
  135.            
  136.               _DurationLed2 = 0;
  137.               break;
  138.  
  139.             case 1:
  140.               _DurationLed2 = 2000;
  141.               break;
  142.  
  143.             case 2:
  144.               _DurationLed2 = 1500;
  145.               break;
  146.  
  147.             case 3:
  148.               _DurationLed2 = 1000;
  149.               break;
  150.  
  151.             case 4:
  152.               _DurationLed2 = 750;
  153.               break;
  154.  
  155.             case 5:
  156.               _DurationLed2 = 500;
  157.               break;
  158.           }
  159.          
  160.           _DelayLed2 = _DurationLed2;
  161.         }
  162.         break;
  163.        
  164.       case 12:
  165.         _ButtonPressed1 = FALSE;
  166.         _ButtonPressed2 = FALSE;
  167.         break;
  168.        
  169.       default:
  170.         break;
  171.     }
  172.   }
  173. }
RAW Paste Data