Advertisement
Guest User

kacpeju kacpeju ty bojeju

a guest
Nov 15th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.78 KB | None | 0 0
  1. #include <msp430x14x.h>
  2. #include "lcd.h"
  3. #include "portyLcd.h"
  4.  
  5. unsigned int i=0;
  6. unsigned int sekundy=0;
  7. unsigned int licznik=0;
  8. int mies[12][11]={{115, 116, 121, 99, 122, 101, 0,32,32,32,32},//styczeń
  9. {32,32,108, 117, 116, 121,32,32,32,32,32}, //luty
  10. {32,32,109, 97, 114, 122, 101, 99,32,32,32}, //marzec
  11. {32,32,107, 119, 105, 101, 99, 105, 101, 0,32}, //kwiecień
  12. {32,32,109, 97, 106,32,32,32,32,32,32}, //maj
  13. {32,32,99, 122, 101, 114, 119, 105, 101, 99,32}, //czerwiec
  14. {32,32,108,105,112,105,101,99,32,32,32}, //lipiec
  15. {32,32,115,105,101,114,112,105,101,0,32}, //sierpień
  16. {32,32,119,114,122,101,115,105,101,0,32}, //wrzesień
  17. {32,32,112,97,1,100,122,105,101,114,110}, //październik
  18. {32,32,108,105,115,116,111,112,97,100,32}, //listopad
  19. {32,32,103,114,117,100,122,105,101,0,32}}; //grudzień
  20. void Clock(int min,int godz,int dzien,int m)
  21. {
  22. while(1==1)
  23. {
  24. _BIS_SR(LPM3_bits);
  25. if (licznik %10 ==0) // gdy mine3a sekunda (10 * 100 milisekund)
  26. {
  27. licznik=0;
  28. ++sekundy;
  29.  
  30. if(((sekundy-sekundy%10)/10)==6)// licz minuty
  31. {
  32. ++min;
  33. }
  34. if(((min-min%10)/10)==6&&(((sekundy-sekundy%10)/10)==6))
  35. {
  36. ++godz;
  37. min=0;
  38. sekundy=0;
  39. }
  40. if(((godz-godz%10)/10)==2 && godz%10==4)
  41. {
  42. godz=0;
  43. ++dzien;
  44. }
  45. SEND_CMD(DD_RAM_ADDR);
  46. printDecDigit((dzien-dzien%10)/10);
  47. printDecDigit(dzien%10);
  48. for(int i=0;i<11;i++)
  49. {
  50. SEND_CHAR(mies[m][i]);
  51. }
  52. SEND_CMD(DD_RAM_ADDR2);
  53. printDecDigit((godz-godz%10)/10);
  54. printDecDigit(godz%10);
  55. SEND_CHAR(':');
  56. printDecDigit((min-min%10)/10);
  57. printDecDigit(min%10);
  58. SEND_CHAR(':');
  59. printDecDigit((sekundy-sekundy%10)/10);
  60. printDecDigit(sekundy%10);
  61. for(int i=0; i<4; i++)
  62. {
  63. SEND_CMD(CUR_SHIFT_LEFT);
  64. }
  65. if(godz>23)
  66. {
  67. ++dzien;
  68. min=0;
  69. godz=0;
  70. }
  71. }
  72. }
  73. }
  74.  
  75. void main( void )
  76. {
  77. int godzina=23;
  78. int minuta=59;
  79. int dzien=12;
  80. int miesiac = 2;
  81. int spec[2][8]={{2, 4, 22, 25, 17, 17, 17, 0}, //n
  82. {2, 4, 31, 2, 4, 8, 31, 0}};
  83. int mies[12][11]={{115, 116, 121, 99, 122, 101, 0,32,32,32,32},//styczeń
  84. {108, 117, 116, 121,32,32,32,32,32,32,32}, //luty
  85. {109, 97, 114, 122, 101, 99,32,32,32,32,32}, //marzec
  86. {107, 119, 105, 101, 99, 105, 101, 0,32,32,32}, //kwiecień
  87. {109, 97, 106,32,32,32,32,32,32,32,32}, //maj
  88. {99, 122, 101, 114, 119, 105, 101, 99,32,32,32}, //czerwiec
  89. {108,105,112,105,101,99,32,32,32,32,32}, //lipiec
  90. {115,105,101,114,112,105,101,0,32,32,32}, //sierpień
  91. {119,114,122,101,115,105,101,0,32,32,32}, //wrzesień
  92. {112,97,1,100,122,105,101,114,110,105,107}, //październik
  93. {108,105,115,116,111,112,97,100,32,32,32}, //listopad
  94. {103,114,117,100,122,105,101,0,32,32,32}}; //grudzień
  95. P2DIR |= BIT1 ; // STATUS LED
  96. P4DIR &= ~0x10;
  97. WDTCTL=WDTPW + WDTHOLD; // Wy31czenie WDT
  98. InitPortsLcd(); // inicjalizacja portów LCD
  99. InitLCD(); // inicjalizacja LCD
  100. clearDisplay(); // czyszczenie wyowietlacza
  101. SEND_CMD(CG_RAM_ADDR);
  102. for(int i=0;i<2;i++)
  103. {
  104. for(int j=0;j<8;j++)
  105. {
  106. SEND_CHAR(spec[i][j]);
  107. }
  108. }
  109.  
  110. // Basic Clock Module ustawiamy na ACLK(zegar 8 MHz ) i dzielimy czestotliwooa przez 2 (4 MHz)
  111. BCSCTL1 |= XTS; // ACLK = LFXT1 = HF XTAL 8MHz
  112.  
  113. do
  114. {
  115. IFG1 &= ~OFIFG; // Czyszczenie flgi OSCFault
  116. for (i = 0xFF; i > 0; i--); // odczekanie
  117. }
  118. while ((IFG1 & OFIFG) == OFIFG); // dopóki OSCFault jest ci1gle ustawiona
  119.  
  120. BCSCTL1 |= DIVA_1; // ACLK=8 MHz/2=4 MHz
  121. BCSCTL2 |= SELM0 | SELM1; // MCLK= LFTX1 =ACLK
  122.  
  123. // Timer_A ustawiamy na 500 kHz
  124. // a przerwanie generujemy co 100 ms
  125. TACTL = TASSEL_1 + MC_1 +ID_3; // Wybieram ACLK, ACLK/8=500kHz,tryb Up
  126. CCTL0 = CCIE; // w31czenie przerwan od CCR0
  127. CCR0=50000; // podzielnik 50000: przerwanie co 100 ms
  128.  
  129. _EINT(); // w31czenie przerwan
  130.  
  131. // przejscie do trybu LPM3
  132. Clock(minuta,godzina,dzien,miesiac);
  133.  
  134. }
  135.  
  136. #pragma vector=TIMERA0_VECTOR
  137. __interrupt void Timer_A (void)
  138. {
  139. ++licznik;
  140. _BIC_SR_IRQ(LPM3_bits); // wyjocie z trybu LPM3
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement