Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //libraries declaration ****************************************************************************************
- #include "msp430x14x.h"
- #include "stdlib.h"
- #include "stdio.h"
- #include "string.h"
- #include "easyweb.h"
- #include "cs8900.h"
- #include <stdbool.h>
- //buttons declaration ******************************************************************************************
- #define B1 P4IN&BIT4
- #define B2 P4IN&BIT5
- #define B3 P4IN&BIT6
- #define B4 P4IN&BIT7
- //LED variable declaration**************************************************************************************
- enum DIODA_ {D1, D2, D3};
- typedef enum DIODA_ DIODA;
- //Global variables declaration *********************************************************************************
- bool tryb = true;
- int AktywnaDioda=0; ///zmienna mowi ktora dioda jest w tym momencie wlaczona
- int TrybPracyDiody1=0; ///zmienna mowi w jakim trybie pracuje dioda
- int TrybPracyDiody2=0; ///zmienna mowi w jakim trybie pracuje dioda
- int TrybPracyDiody3=0; ///zmienna mowi w jakim trybie pracuje dioda
- int standiody1=0; ///zmienna opisuje stan diody wlaczony/wylaczony
- int standiody2=0; ///zmienna opisuje stan diody wlaczony/wylaczony
- int standiody3=0; ///zmienna opisuje stan diody wlaczony/wylaczony
- //Task 1 functions *********************************************************************************************
- ///selected LED turning OFF function ***************************************************************************
- void zgas(DIODA D) //funkcja jednoczesnie gasi diody oraz informuje o zmianie ich stanu
- {
- switch(D)
- {
- case(D1):
- {
- P2OUT |= BIT1;
- standiody1=0;
- break;
- }
- case(D2):
- {
- P1OUT &= ~BIT5;
- standiody2=0;
- break;
- }
- case(D3):
- {
- P1OUT &= ~BIT6;
- standiody3=0;
- break;
- }
- }
- }
- ///LED port declaration *****************************************************************************************
- void ustawianieportowdiody()
- {
- P2DIR |= BIT1;
- P1DIR |= BIT5;
- P1DIR |= BIT6;
- zgas(D1);
- zgas(D2);
- zgas(D3);
- }
- ///selected LED turning ON function *****************************************************************************
- void zapal(DIODA D) //funkcja jednoczesnie zapala diody i informuje o zmianie ich stanu
- {
- switch(D)
- {
- case(D1):
- {
- P2OUT &= ~BIT1;
- standiody1=1;
- AktywnaDioda=0;
- break;
- }
- case(D2):
- {
- P1OUT |= BIT5;
- standiody2=1;
- AktywnaDioda=1;
- break;
- }
- case(D3):
- {
- P1OUT |= BIT6;
- standiody3=1;
- AktywnaDioda=2;
- break;
- }
- }
- }
- //Task 2 functions *********************************************************************************************
- ///LED flash function ******************************************************************************************
- void miganie(int migniecia, unsigned long int czas,DIODA D)
- {
- volatile unsigned int i;
- while(migniecia)
- {
- for(i=0; i<czas; i++); //petla opoznienia czasowego
- zapal(D);
- for(i=0; i<czas; i++);
- zgas(D);
- migniecia--;
- }
- }
- //Task 3 functions *********************************************************************************************
- ///Buttons port declaration ************************************************************************************
- void portyprzyciski()
- {
- P4DIR &= ~BIT4;
- P4DIR &= ~BIT5;
- P4DIR &= ~BIT6;
- P4DIR &= ~BIT7;
- }
- ///Astable lightning LED function
- void przycisk(DIODA D) //funkcja zapala i gasi diody w trybie astabilnym
- {
- while (1)
- {
- if(!(B1))
- {
- zapal(D1);
- AktywnaDioda=0;
- }
- else
- zgas(D1);
- if(!(B2))
- {
- zapal(D2);
- AktywnaDioda=1;
- }
- else
- zgas(D2);
- if(!(B3))
- {
- zapal(D3);
- AktywnaDioda=2;
- }
- else
- zgas(D3);
- }
- }
- //Task 4, working in configuration and operation mode **********************************************************
- void konfiguracja ()
- {zgas(D1);
- zgas(D2);
- zgas(D3);
- if(!(B2))
- {
- AktywnaDioda++;
- while(!(B2)){}
- }
- if(AktywnaDioda%3==0)
- {
- zapal(D1);
- }
- else if(AktywnaDioda%3==1)
- {
- zapal(D2);
- }
- else if(AktywnaDioda%3==2)
- {
- zapal(D3);
- }
- if(!(B3))
- {
- if(AktywnaDioda%3==0)
- {
- TrybPracyDiody1++;
- while(!(B3)){}
- }
- if(AktywnaDioda%3==1)
- {
- TrybPracyDiody2++;
- while(!(B3)){}
- }
- if(AktywnaDioda%3==2)
- {
- TrybPracyDiody3++;
- while(!(B3)){}
- }
- }
- }
- int zliczanie1=0; int zliczanie2=0; int zliczanie3=0;
- void praca()
- {
- if (TrybPracyDiody1%5 ==0)
- {
- zapal(D1);
- }
- else if (TrybPracyDiody1%5 ==1)
- {
- zgas(D1);
- }
- else if (TrybPracyDiody1%5 ==2)
- {
- if(!(B2))
- {
- zliczanie1++;
- while(!(B2)){}
- }
- if(zliczanie1%2==0)
- zapal(D1);
- else if(zliczanie1%2==1)
- zgas(D1);
- }
- else if (TrybPracyDiody1%5 ==3)
- {
- if(!(B2))
- zapal(D1);
- else
- zgas(D1);
- }
- else if (TrybPracyDiody1%5 ==4)
- {
- miganie (100, 30000 ,D1);
- }
- if (TrybPracyDiody2%5 ==0)
- {
- zapal(D2);
- }
- else if (TrybPracyDiody2%5 ==1)
- {
- zgas(D2);
- }
- else if (TrybPracyDiody2%5 ==2)
- {
- if(!(B3))
- {
- zliczanie2++;
- while(!(B3)){}
- }
- if(zliczanie2%2==0)
- zapal(D2);
- if(zliczanie2%2==1)
- zgas(D2);
- }
- else if (TrybPracyDiody2%5 ==3)
- {
- if(!(B3))
- zapal(D2);
- else
- zgas(D2);
- }
- else if (TrybPracyDiody2%5 ==4)
- {
- miganie (100, 30000 ,D2);
- }
- if (TrybPracyDiody3%5 ==0)
- {
- zapal(D3);
- }
- else if (TrybPracyDiody3%5 ==1)
- {
- zgas(D3);
- }
- else if (TrybPracyDiody3%5 ==2)
- {
- if(!(B4))
- {
- zliczanie3++;
- while(!(B4)){}
- }
- if(zliczanie3%2==0)
- zapal(D3);
- if(zliczanie3%2==1)
- zgas(D3);
- }
- else if (TrybPracyDiody3%5 ==3)
- {
- if(!(B4))
- zapal(D3);
- else
- zgas(D3);
- }
- else if (TrybPracyDiody3%5 ==4)
- {
- miganie (100, 30000 ,D3);
- }
- }
- void przelacznik() //funkcja odpowiedzialna jest za przelaczanie ukladu z trybu pracy do trybu konfiguracji
- {
- //operating mode *****************************************************************************************
- while (tryb==true)
- {
- o:
- praca();
- if(!(B1))
- tryb=false;
- while (!(B1)) {};
- }
- //configuration mode *************************************************************************************
- while (tryb==false)
- {
- konfiguracja();
- if(!(B1))
- {tryb=true;
- goto o;}
- }
- }
- ///Operation mode function ***********************************************************************************
- ///Configuration mode function *******************************************************************************
- //funkcja odpowiedzialna jest za wybor oraz konfiguracje odpowiednich diod
- ///Main function *********************************************************************************************
- void main(void)
- {
- WDTCTL = WDTPW + WDTHOLD;
- ustawianieportowdiody();
- portyprzyciski();
- /**zadanie 1
- zapal (D1);
- zapal (D2);
- zapal (D3);
- zgas (D2);**/
- /**zadanie 2
- miganie (100, 30000 ,D1);**/
- /**zadanie 3
- przycisk();**/
- ///zadanie 4
- przelacznik();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement