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 spowalniacz(int x){
- do {
- x--;
- WDTCTL=WDTPW +WDTCNTCL;
- }
- while(x!=0);
- }
- void main( void )
- {
- unsigned int i;
- WDTCTL = WDTPW + WDTHOLD; // wyłączenie układu WDT
- P2DIR |= BIT1; // bit P2.1 jako wyjście
- P2OUT |= BIT1;
- P1DIR |= 0x20;
- P1DIR |= 0x40;
- P1OUT &= 0x20;
- P1OUT &= 0x40;// zgaszenie diody
- BCSCTL1 |= DCOCTL_;//XTS + DIVA1 + DIVA0; // (ACLK = LFXT1 = HF XTAL)/8
- do
- {
- IFG1 &= ~OFIFG; // czyszczenie flgi OSCFault
- for (i = 0xFF; i > 0; i--); // odczekanie
- }
- while ((IFG1 & OFIFG)); // dopóki OSCFault jest ciągle ustawiona
- ///WDTCTL = WDTPW + WDTCNTCL + DCOCTL_ ; // tryb watchdog ACLK
- if(WDTIFG & IFG1)
- { int k;
- for(k = 20; k>0; k-- ){
- spowalniacz(50000);
- P2OUT ^= 0x02;
- P1OUT ^= ~0x20;
- P1OUT ^= ~0x40;
- spowalniacz(50000);
- }
- IFG1 &= ~WDTIFG;
- P2OUT &= ~ BIT1; // demonsrcja po przez zaplenie diody że WDT zadziałał
- }else{
- int j;
- for(j = 4; j>0; j-- ){
- spowalniacz(50000);
- P2OUT ^= 0x02;
- P1OUT ^= ~0x20;
- P1OUT ^= ~0x40;
- spowalniacz(50000);
- }
- }
- 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