Advertisement
Guest User

Untitled

a guest
Feb 21st, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. #include <msp430.h>
  2.  
  3. volatile unsigned int s2State;
  4. volatile unsigned int s1State;
  5. volatile unsigned int s2Pressed;
  6. volatile unsigned int s1Pressed;
  7.  
  8. volatile unsigned int areLedsEnabled = 0;
  9. volatile unsigned int isBlinkingEnabled = 0;
  10. volatile unsigned int delay = 0;
  11. volatile unsigned int ledsState = 0;
  12.  
  13. void setUpButtons() {
  14. P1DIR &= !(BIT7);
  15. P2DIR &= !(BIT2);
  16.  
  17. P1OUT |= BIT7;
  18. P1REN |= BIT7;
  19.  
  20. P2OUT |= BIT2;
  21. P2REN |= BIT2;
  22. }
  23.  
  24. void setUpLeds() {
  25. P1DIR |=BIT0;
  26. P8DIR |=BIT1;
  27. P8DIR |=BIT2;
  28. }
  29.  
  30. void setUp() {
  31. setUpButtons();
  32. setUpLeds();
  33. }
  34.  
  35. void enableLeds() {
  36. P1OUT |= BIT0;
  37. P8OUT |= BIT1;
  38. P8OUT |= BIT2;
  39. }
  40.  
  41. void disableLeds() {
  42. P1OUT &= ~(BIT0);
  43. P8OUT &= ~(BIT1);
  44. P8OUT &= ~(BIT2);
  45. }
  46.  
  47. int s1Released() {
  48. return s1Pressed == 1 && s1State != 0;
  49. }
  50.  
  51. void enableOrDisableLeds() {
  52. if (s1Released()) {
  53. if (areLedsEnabled == 0) {
  54. areLedsEnabled++;
  55. enableLeds();
  56. } else if (areLedsEnabled > 0) {
  57. areLedsEnabled--;
  58. if(isBlinkingEnabled > 0){
  59. isBlinkingEnabled--;
  60. }
  61. disableLeds();
  62. }
  63. s1Pressed = 0;
  64. } else if (s1State == 0) {
  65. s1Pressed = 1;
  66. }
  67. }
  68.  
  69. void enableOrDisableBlinking() {
  70. if (s2Pressed == 1 && s2State != 0) {
  71. if (isBlinkingEnabled == 0) {
  72. isBlinkingEnabled++;
  73. } else if (isBlinkingEnabled > 0) {
  74. isBlinkingEnabled--;
  75. }
  76.  
  77. s2Pressed = 0;
  78. } else if (s2State == 0 && areLedsEnabled > 0) {
  79. s2Pressed = 1;
  80. }
  81. }
  82.  
  83. void blinkIfNeccessary() {
  84. if (isBlinkingEnabled > 0 && areLedsEnabled > 0 && ledsState == 1) {
  85. disableLeds();
  86. ledsState = 0;
  87. } else if (isBlinkingEnabled > 0 && areLedsEnabled > 0) {
  88. enableLeds();
  89. ledsState = 1;
  90. } else if (isBlinkingEnabled == 0 && areLedsEnabled > 0) {
  91. enableLeds();
  92. ledsState = 1;
  93. } else {
  94. disableLeds();
  95. ledsState = 0;
  96. }
  97. }
  98.  
  99. void updateButtonState() {
  100. s1State = (P1IN & BIT7);
  101. s2State = (P2IN & BIT2);
  102. }
  103.  
  104. void wait() {
  105. delay = 10000;
  106. do delay--;
  107. while(delay != 0);
  108. }
  109.  
  110. void run() {
  111. updateButtonState();
  112. enableOrDisableLeds();
  113. enableOrDisableBlinking();
  114. blinkIfNeccessary();
  115. wait();
  116. }
  117.  
  118. void stopWatchDog() {
  119. WDTCTL = WDTPW | WDTHOLD;
  120. }
  121.  
  122. int main(void)
  123. {
  124. stopWatchDog();
  125. setUp();
  126. while(1)
  127. {
  128. run();
  129. }
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement