Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // program demonstruje działanie układu watchdog timer w trybie pracy watchdog
- // podczas normalnej pracy dioda sygnalizacyjna jest zgaszona
- // w przypadku naciśnięcia żółtego klawisza następuje zawieszeni programu
- // układ watchdog restartuje program a użytkownikowi jest to oznajmiane po przez
- // zapalenie diody sygnalizacyjnej
- #include <msp430x14x.h>
- #define ZOLTY BIT4&P4IN // Żółty klawisz - P4.4
- void delay( unsigned int czas)
- {
- for(int i=0;i<czas;i++)
- { }
- }
- void main( void )
- {
- unsigned int i;
- P4DIR &= ~BIT5;
- P2DIR |= BIT1;
- P1DIR |= BIT5;
- P1DIR |= BIT6 ;
- P2OUT |= BIT1;
- WDTCTL = WDTPW + WDTHOLD; // wyłączenie układu WDT
- P2DIR |= BIT1; // bit P2.1 jako wyjście
- P2OUT |= BIT1; // zgaszenie diody
- if(OFIFG & IFG1) //właczenie zasilania
- {
- for (int i=0; i<2; i++){
- delay(100000);
- P2OUT &= ~BIT1; //zapala diody
- P1OUT |= BIT5;
- P1OUT |= BIT6;
- delay(100000);
- P1OUT &= ~BIT6; //gasi diody
- P1OUT &= ~BIT5;
- P2OUT |= BIT1;
- }
- }
- else{ //po restarcie ukladu
- for(int i=0; i<10; i++){
- delay(100000);
- P2OUT &= ~BIT1; //zapala diody
- P1OUT |= BIT5;
- P1OUT |= BIT6;
- delay(100000);
- P1OUT &= ~BIT6; //wylacza diody
- P1OUT &= ~BIT5;
- P2OUT |= BIT1;
- }
- }
- do
- {
- IFG1 &= ~OFIFG; // czyszczenie flgi OSCFault
- for (i = 0x01; i > 0; i--); // odczekanie
- }
- while ((IFG1 & OFIFG)); // dopóki OSCFault jest ciągle ustawiona
- WDTCTL = WDTPW + WDTCNTCL; //brak WDTSSEL domyslnie ustawia rejestr WDTSSEL na 0 (zegar SMCLK)
- if(WDTIFG & IFG1)
- {
- IFG1 &= ~WDTIFG;
- P2OUT &= ~ BIT1; // WDT zadzialal, zapala diode status
- }
- for(;;) {
- if ((ZOLTY) == 0) //żółty klawisz został wciśnięty
- {
- for(;;); // pętla nieskończona zawieszenie progrmu
- }else
- {
- WDTCTL=WDTPW +WDTCNTCL; // zerowanie WDT
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement