Advertisement
Guest User

Untitled

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