Advertisement
Guest User

Untitled

a guest
Oct 20th, 2014
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 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.  
  12. void spowalniacz(int x){
  13. do {
  14. x--;
  15. WDTCTL=WDTPW +WDTCNTCL;
  16. }
  17. while(x!=0);
  18. }
  19.  
  20. void main( void )
  21. {
  22. unsigned int i;
  23.  
  24.  
  25. WDTCTL = WDTPW + WDTHOLD; // wyłączenie układu WDT
  26.  
  27.  
  28. P2DIR |= BIT1; // bit P2.1 jako wyjście
  29. P2OUT |= BIT1;
  30. P1DIR |= 0x20;
  31. P1DIR |= 0x40;
  32. P1OUT &= 0x20;
  33. P1OUT &= 0x40;// zgaszenie diody
  34. BCSCTL1 |= DCOCTL_;//XTS + DIVA1 + DIVA0; // (ACLK = LFXT1 = HF XTAL)/8
  35.  
  36. do
  37. {
  38. IFG1 &= ~OFIFG; // czyszczenie flgi OSCFault
  39. for (i = 0xFF; i > 0; i--); // odczekanie
  40. }
  41. while ((IFG1 & OFIFG)); // dopóki OSCFault jest ciągle ustawiona
  42.  
  43. ///WDTCTL = WDTPW + WDTCNTCL + DCOCTL_ ; // tryb watchdog ACLK
  44.  
  45.  
  46. if(WDTIFG & IFG1)
  47. { int k;
  48. for(k = 20; k>0; k-- ){
  49. spowalniacz(50000);
  50. P2OUT ^= 0x02;
  51. P1OUT ^= ~0x20;
  52. P1OUT ^= ~0x40;
  53. spowalniacz(50000);
  54. }
  55. IFG1 &= ~WDTIFG;
  56. P2OUT &= ~ BIT1; // demonsrcja po przez zaplenie diody że WDT zadziałał
  57.  
  58. }else{
  59. int j;
  60. for(j = 4; j>0; j-- ){
  61. spowalniacz(50000);
  62. P2OUT ^= 0x02;
  63. P1OUT ^= ~0x20;
  64. P1OUT ^= ~0x40;
  65. spowalniacz(50000);
  66. }
  67. }
  68.  
  69.  
  70. for(;;) {
  71.  
  72. if ((ZOLTY) == 0) //żółty klawisz został wciśnięty
  73. {
  74. for(;;); // pętla nieskończona zawieszenie progrmu
  75. }else
  76. {
  77. WDTCTL=WDTPW +WDTCNTCL; // zerowanie WDT
  78. }
  79.  
  80.  
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement