Advertisement
Guest User

Untitled

a guest
Oct 24th, 2014
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. // program demonstruje działanie układu watchdog timer w trybie pracy watchdog
  2. // podczas normalnej pracy dioda sygnalizacyjna jest zgaszona
  3. // w przypadku naciśnięcia żółtego klawisza następuje zawieszeni programu
  4. // układ watchdog restartuje program a użytkownikowi jest to oznajmiane po przez
  5. // zapalenie diody sygnalizacyjnej
  6.  
  7.  
  8. #include <msp430x14x.h>
  9. #define ZOLTY BIT4&P4IN // Żółty klawisz - P4.4
  10.  
  11. void delay( unsigned int czas)
  12. {
  13. for(int i=0;i<czas;i++)
  14. { }
  15. }
  16.  
  17. void main( void )
  18. {
  19. unsigned int i;
  20.  
  21.  
  22. P4DIR &= ~BIT5;
  23. P2DIR |= BIT1;
  24. P1DIR |= BIT5;
  25. P1DIR |= BIT6 ;
  26. P2OUT |= BIT1;
  27. WDTCTL = WDTPW + WDTHOLD; // wyłączenie układu WDT
  28.  
  29.  
  30. P2DIR |= BIT1; // bit P2.1 jako wyjście
  31. P2OUT |= BIT1; // zgaszenie diody
  32.  
  33.  
  34.  
  35.  
  36. if(OFIFG & IFG1) //właczenie zasilania
  37. {
  38. for (int i=0; i<2; i++){
  39. delay(100000);
  40. P2OUT &= ~BIT1; //zapala diody
  41. P1OUT |= BIT5;
  42. P1OUT |= BIT6;
  43. delay(100000);
  44. P1OUT &= ~BIT6; //gasi diody
  45. P1OUT &= ~BIT5;
  46. P2OUT |= BIT1;
  47.  
  48. }
  49. }
  50. else{ //po restarcie ukladu
  51. for(int i=0; i<10; i++){
  52. delay(100000);
  53. P2OUT &= ~BIT1; //zapala diody
  54. P1OUT |= BIT5;
  55. P1OUT |= BIT6;
  56. delay(100000);
  57. P1OUT &= ~BIT6; //wylacza diody
  58. P1OUT &= ~BIT5;
  59. P2OUT |= BIT1;
  60.  
  61. }
  62. }
  63.  
  64. do
  65. {
  66. IFG1 &= ~OFIFG; // czyszczenie flgi OSCFault
  67. for (i = 0x01; i > 0; i--); // odczekanie
  68. }
  69. while ((IFG1 & OFIFG)); // dopóki OSCFault jest ciągle ustawiona
  70.  
  71. WDTCTL = WDTPW + WDTCNTCL; //brak WDTSSEL domyslnie ustawia rejestr WDTSSEL na 0 (zegar SMCLK)
  72. if(WDTIFG & IFG1)
  73. {
  74.  
  75. IFG1 &= ~WDTIFG;
  76. P2OUT &= ~ BIT1; // WDT zadzialal, zapala diode status
  77. }
  78.  
  79. for(;;) {
  80.  
  81. if ((ZOLTY) == 0) //żółty klawisz został wciśnięty
  82. {
  83. for(;;); // pętla nieskończona zawieszenie progrmu
  84. }else
  85. {
  86. WDTCTL=WDTPW +WDTCNTCL; // zerowanie WDT
  87. }
  88.  
  89.  
  90. }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement