Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.21 KB | None | 0 0
  1. #include <msp430.h>
  2. #include <stdio.h>
  3. #include <stdint.h>
  4. #include "EEL4746.h"
  5.  
  6. #define LOADVALUE 104500
  7. /**
  8.  * main.c
  9.  */
  10.  
  11.  
  12. void myLED(uint8_t Color);
  13. void myDelay(uint32_t LOAD);
  14. void BlinkLED(uint8_t Color);
  15. void Display(uint8_t count);
  16.  
  17. const uint8_t RED_ON = 0;
  18. const uint8_t GREEN_ON = 2;
  19. const uint8_t OFF = 4;
  20. const uint8_t MAXCOUNT = 3;
  21. uint8_t count = 0;
  22. uint8_t vOn = ~0;
  23. uint8_t vUp = 0;
  24.  
  25. void main(void)
  26. {
  27.     WDTCTL = WDTPW | WDTHOLD;   // stop watchdog timer
  28.  
  29.     P1DIR |= BIT0;
  30.     P4DIR |= BIT7;
  31.  
  32.     P1DIR &= ~BIT1;
  33.     P2DIR &= ~BIT1;
  34.     P1REN |= BIT1; // Sets BIT1 of P1REN.
  35.     P1OUT |= BIT1; // Sets BIT 1 of P1OUT;
  36.     P2REN |= BIT1; // Sets BIT1 of P1REN.
  37.     P2OUT |= BIT1;
  38.  
  39.     P1OUT &= ~BIT0;
  40.     P4OUT &= ~BIT7;
  41.  
  42.     P2IES |= BIT1;
  43.     P1IES |= BIT1;
  44.     P2IE |= BIT1;
  45.     P1IE |= BIT1;
  46.     P1IFG &= ~BIT1;
  47.     P2IFG &= ~BIT1;
  48.  
  49.  
  50.     BlinkLED(RED_ON);
  51. //    EnableInterrupts4746(LOADVALUE,0);
  52.     EnableInterrupts4746(LOADVALUE,1);
  53. }
  54.  
  55. void myLED(uint8_t Color){
  56.  
  57.     switch(Color){
  58.         case RED_ON:
  59.             P1OUT |= BIT0;
  60.         break;
  61.         case RED_ON+1:
  62.             P1OUT &= ~BIT0;
  63.         break;
  64.         case GREEN_ON:
  65.             P4OUT |= BIT7;
  66.         break;
  67.         case GREEN_ON+1:
  68.             P4OUT &= ~BIT7;
  69.         break;
  70.         default:
  71.             P1OUT &= ~BIT0;
  72.             P4OUT &= ~BIT7;
  73.         break;
  74.     }
  75. }
  76. void myDelay(uint32_t LOAD){
  77.     EnableTimer4746(LOAD); // enable timer
  78.     while((TA0CTL & BIT0) == 0 ); //Wait until TAIFG == 1
  79.     DisableTimer4746(); // Resets timer flag and turns off the timer
  80.     return;
  81. }
  82.  
  83.  
  84. void BlinkLED(uint8_t Color){
  85.     myLED(Color);
  86.     myDelay(104500);
  87.     myLED(Color+1);
  88.     myDelay(104500);
  89. }
  90.  
  91. void Display(uint8_t count){
  92.     uint8_t vTwos;
  93.     uint8_t vOnes;
  94.     switch(count)
  95.     {
  96.     case 0:
  97.         vTwos = 0;
  98.         vOnes = 0;
  99.         break;
  100.     case 1:
  101.         vTwos = 0;
  102.         vOnes = 1;
  103.         break;
  104.     case 2:
  105.         vTwos = 1;
  106.         vOnes = 1;
  107.         break;
  108.     case 3:
  109.         vTwos = 1;
  110.         vOnes = 0;
  111.         break;
  112.     default:
  113.         vTwos = 0;
  114.         vOnes = 0;
  115.         break;
  116.     }
  117.  
  118.  
  119.     switch (vTwos)
  120.     {
  121.     case 1:
  122.         myLED(RED_ON); // Turns RED ON
  123.         break;
  124.     default:
  125.         myLED(RED_ON + 1); // Turns RED OFF
  126.         break;
  127.     }
  128.     switch (vOnes)
  129.     {
  130.     case 1:
  131.         myLED(GREEN_ON);
  132.         break;
  133.     default:
  134.         myLED(GREEN_ON+1);
  135.         break;
  136.     }
  137. }
  138.  
  139. #pragma vector=TIMER0_A0_VECTOR
  140. __interrupt void TIMER0_A0(void)
  141. {
  142.     Display(count);
  143.     if(vOn != 0){
  144.         if(vUp == 0){
  145.             if(count == MAXCOUNT) count = 0;
  146.             else count++;
  147.         }
  148.         else {
  149.             if(count == 0) count = MAXCOUNT;
  150.             else count--;
  151.         }
  152.     }
  153. }
  154.  
  155. #pragma vector=PORT2_VECTOR
  156. __interrupt void PORT2(void){
  157.     switch(P2IV){
  158.     case 4:
  159.         vOn = ~vOn;
  160.         P2IFG &= ~BIT1;
  161.         break;
  162.     default:
  163.         break;
  164.     }
  165.  
  166. }
  167. #pragma vector=PORT1_VECTOR
  168. __interrupt void PORT1(void){
  169.     switch(P1IV){
  170.     case 4:
  171.         vUp = ~vUp;
  172.         P1IFG &= ~BIT1;
  173.         break;
  174.     default:
  175.         break;
  176.     }
  177.  
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement