Advertisement
MarVin666

Untitled

Oct 7th, 2015
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.75 KB | None | 0 0
  1. //libraries declaration ****************************************************************************************
  2. #include "msp430x14x.h"
  3. #include "stdlib.h"
  4. #include "stdio.h"
  5. #include "string.h"
  6. #include "easyweb.h"
  7. #include "cs8900.h"
  8. #include <stdbool.h>
  9. //buttons declaration ******************************************************************************************
  10. #define B1 P4IN&BIT4
  11. #define B2 P4IN&BIT5
  12. #define B3 P4IN&BIT6
  13. #define B4 P4IN&BIT7
  14. //LED variable declaration**************************************************************************************
  15. enum DIODA_ {D1, D2, D3};
  16. typedef enum DIODA_ DIODA;
  17. //Global variables declaration *********************************************************************************
  18. bool tryb = true;
  19. int AktywnaDioda=0; ///zmienna mowi ktora dioda jest w tym momencie wlaczona
  20. int TrybPracyDiody1=0; ///zmienna mowi w jakim trybie pracuje dioda
  21. int TrybPracyDiody2=0; ///zmienna mowi w jakim trybie pracuje dioda
  22. int TrybPracyDiody3=0; ///zmienna mowi w jakim trybie pracuje dioda
  23. int standiody1=0; ///zmienna opisuje stan diody wlaczony/wylaczony
  24. int standiody2=0; ///zmienna opisuje stan diody wlaczony/wylaczony
  25. int standiody3=0; ///zmienna opisuje stan diody wlaczony/wylaczony
  26. //Task 1 functions *********************************************************************************************
  27. ///selected LED turning OFF function ***************************************************************************
  28. void zgas(DIODA D) //funkcja jednoczesnie gasi diody oraz informuje o zmianie ich stanu
  29. {
  30.     switch(D)
  31.     {
  32.     case(D1):
  33.     {
  34.         P2OUT |= BIT1;
  35.         standiody1=0;
  36.         break;
  37.     }
  38.     case(D2):
  39.     {
  40.         P1OUT &= ~BIT5;
  41.         standiody2=0;
  42.         break;
  43.     }
  44.     case(D3):
  45.     {
  46.         P1OUT &= ~BIT6;
  47.         standiody3=0;
  48.         break;
  49.     }
  50.     }
  51. }
  52. ///LED port declaration *****************************************************************************************
  53. void ustawianieportowdiody()
  54. {
  55.     P2DIR |= BIT1;
  56.     P1DIR |= BIT5;
  57.     P1DIR |= BIT6;
  58.     zgas(D1);
  59.     zgas(D2);
  60.     zgas(D3);
  61. }
  62. ///selected LED turning ON function *****************************************************************************
  63. void zapal(DIODA D) //funkcja jednoczesnie zapala diody i informuje o zmianie ich stanu
  64. {
  65.     switch(D)
  66.     {
  67.     case(D1):
  68.     {
  69.         P2OUT &= ~BIT1;
  70.         standiody1=1;
  71.         AktywnaDioda=0;
  72.         break;
  73.     }
  74.     case(D2):
  75.     {
  76.         P1OUT |= BIT5;
  77.         standiody2=1;
  78.         AktywnaDioda=1;
  79.         break;
  80.     }
  81.     case(D3):
  82.     {
  83.         P1OUT |= BIT6;
  84.         standiody3=1;
  85.         AktywnaDioda=2;
  86.         break;
  87.     }
  88.     }
  89. }
  90.  
  91. //Task 2 functions *********************************************************************************************
  92. ///LED flash function ******************************************************************************************
  93. void miganie(int migniecia, unsigned long int czas,DIODA D)
  94. {
  95.     volatile unsigned int i;
  96.     while(migniecia)
  97.     {
  98.         for(i=0; i<czas; i++); //petla opoznienia czasowego
  99.         zapal(D);
  100.         for(i=0; i<czas; i++);
  101.         zgas(D);
  102.         migniecia--;
  103.     }
  104. }
  105.  
  106. //Task 3 functions *********************************************************************************************
  107. ///Buttons port declaration ************************************************************************************
  108. void portyprzyciski()
  109. {
  110.     P4DIR &= ~BIT4;
  111.     P4DIR &= ~BIT5;
  112.     P4DIR &= ~BIT6;
  113.     P4DIR &= ~BIT7;
  114. }
  115. ///Astable lightning LED function
  116. void przycisk(DIODA D) //funkcja zapala i gasi diody w trybie astabilnym
  117. {
  118.     while (1)
  119.     {
  120.         if(!(B1))
  121.         {
  122.             zapal(D1);
  123.            AktywnaDioda=0;
  124.         }
  125.         else
  126.             zgas(D1);
  127.         if(!(B2))
  128.         {
  129.             zapal(D2);
  130.             AktywnaDioda=1;
  131.         }
  132.         else
  133.             zgas(D2);
  134.         if(!(B3))
  135.         {
  136.             zapal(D3);
  137.             AktywnaDioda=2;
  138.         }
  139.         else
  140.             zgas(D3);
  141.     }
  142. }
  143.  
  144.  
  145.  
  146.  
  147. //Task 4, working in configuration and operation mode **********************************************************
  148.  
  149. void konfiguracja ()
  150. {zgas(D1);
  151.     zgas(D2);
  152.     zgas(D3);
  153.         if(!(B2))
  154.         {
  155.                 AktywnaDioda++;
  156.                 while(!(B2)){}
  157.         }
  158.         if(AktywnaDioda%3==0)
  159.         {
  160.           zapal(D1);
  161.         }
  162.         else if(AktywnaDioda%3==1)
  163.         {
  164.           zapal(D2);
  165.         }
  166.         else if(AktywnaDioda%3==2)
  167.         {
  168.           zapal(D3);
  169.         }
  170.         if(!(B3))
  171.         {
  172.                 if(AktywnaDioda%3==0)
  173.                 {
  174.                         TrybPracyDiody1++;
  175.                         while(!(B3)){}
  176.                 }
  177.                 if(AktywnaDioda%3==1)
  178.                 {
  179.                         TrybPracyDiody2++;
  180.                         while(!(B3)){}
  181.                 }
  182.                 if(AktywnaDioda%3==2)
  183.                 {
  184.                         TrybPracyDiody3++;
  185.                         while(!(B3)){}
  186.                 }
  187.         }
  188. }
  189.  
  190.  
  191. int zliczanie1=0; int zliczanie2=0; int zliczanie3=0;
  192. void praca()
  193. {
  194.  
  195.                 if (TrybPracyDiody1%5 ==0)
  196.                 {
  197.                         zapal(D1);
  198.                 }
  199.                 else if (TrybPracyDiody1%5 ==1)
  200.                 {
  201.                         zgas(D1);
  202.                 }
  203.                
  204.                 else if (TrybPracyDiody1%5 ==2)
  205.                 {
  206.                         if(!(B2))
  207.                         {
  208.                                 zliczanie1++;
  209.                                 while(!(B2)){}
  210.                         }
  211.                         if(zliczanie1%2==0)
  212.                                 zapal(D1);
  213.                         else if(zliczanie1%2==1)
  214.                                 zgas(D1);
  215.                 }
  216.                
  217.                 else if (TrybPracyDiody1%5 ==3)
  218.                 {
  219.                         if(!(B2))
  220.                                 zapal(D1);
  221.                         else
  222.                                 zgas(D1);
  223.                 }
  224.                 else if (TrybPracyDiody1%5 ==4)
  225.                 {
  226.                         miganie (100, 30000 ,D1);
  227.                 }
  228.                 if (TrybPracyDiody2%5 ==0)
  229.                 {
  230.                         zapal(D2);
  231.                 }
  232.                 else if (TrybPracyDiody2%5 ==1)
  233.                 {
  234.                         zgas(D2);
  235.                 }
  236.                 else if (TrybPracyDiody2%5 ==2)
  237.                 {
  238.                         if(!(B3))
  239.                         {
  240.                                 zliczanie2++;
  241.                                 while(!(B3)){}
  242.                         }
  243.                         if(zliczanie2%2==0)
  244.                                 zapal(D2);
  245.                         if(zliczanie2%2==1)
  246.                                 zgas(D2);
  247.                 }
  248.                 else if (TrybPracyDiody2%5 ==3)
  249.                 {
  250.                         if(!(B3))
  251.                                 zapal(D2);
  252.                         else
  253.                                 zgas(D2);
  254.                 }
  255.                 else if (TrybPracyDiody2%5 ==4)
  256.                 {
  257.                         miganie (100, 30000 ,D2);
  258.                 }
  259.                 if (TrybPracyDiody3%5 ==0)
  260.                 {
  261.                         zapal(D3);
  262.                 }
  263.                 else if (TrybPracyDiody3%5 ==1)
  264.                 {
  265.                         zgas(D3);
  266.                 }
  267.                 else if (TrybPracyDiody3%5 ==2)
  268.                 {
  269.                         if(!(B4))
  270.                         {
  271.                                 zliczanie3++;
  272.                                 while(!(B4)){}
  273.                         }
  274.                         if(zliczanie3%2==0)
  275.                                 zapal(D3);
  276.                         if(zliczanie3%2==1)
  277.                                 zgas(D3);
  278.                 }
  279.                 else if (TrybPracyDiody3%5 ==3)
  280.                 {
  281.                         if(!(B4))
  282.                                 zapal(D3);
  283.                         else
  284.                                 zgas(D3);
  285.                 }
  286.                 else if (TrybPracyDiody3%5 ==4)
  287.                 {
  288.                         miganie (100, 30000 ,D3);
  289.                 }
  290. }
  291.  
  292. void przelacznik() //funkcja odpowiedzialna jest za przelaczanie ukladu z trybu pracy do trybu konfiguracji
  293. {
  294.   //operating mode *****************************************************************************************
  295.    
  296.     while (tryb==true)
  297.     {
  298.             o:
  299.            
  300.             praca();
  301.            
  302.             if(!(B1))
  303.             tryb=false;
  304.             while (!(B1)) {};
  305.        
  306.     }
  307.     //configuration mode *************************************************************************************
  308.     while (tryb==false)
  309.     {
  310.        
  311.             konfiguracja();
  312.             if(!(B1))
  313.             {tryb=true;
  314.             goto o;}
  315.  
  316.     }
  317.        
  318.  
  319. }
  320.  
  321. ///Operation mode function ***********************************************************************************
  322.  
  323.  
  324. ///Configuration mode function *******************************************************************************
  325. //funkcja odpowiedzialna jest za wybor oraz konfiguracje odpowiednich diod
  326.  
  327.  
  328. ///Main function *********************************************************************************************
  329.  
  330. void main(void)
  331. {  
  332.   WDTCTL = WDTPW + WDTHOLD;
  333.     ustawianieportowdiody();
  334.     portyprzyciski();
  335.     /**zadanie 1
  336.     zapal (D1);
  337.     zapal (D2);
  338.     zapal (D3);
  339.     zgas (D2);**/
  340.  
  341.     /**zadanie 2
  342.     miganie (100, 30000 ,D1);**/
  343.  
  344.     /**zadanie 3
  345.     przycisk();**/
  346.  
  347.     ///zadanie 4
  348.     przelacznik();
  349.  
  350.  
  351.  
  352.  
  353. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement