Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2015
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. #define F_CPU 1000000UL
  2.  
  3. #include <avr/io.h>
  4. #include <avr/interrupt.h>
  5.  
  6. volatile int milisekundy = 0;
  7.  
  8. volatile int przelaczEkran = 0;
  9. volatile int tickDiody = 0;
  10.  
  11. void wyswietlLiczbe(int liczba);
  12. volatile int sekundy = 0;
  13.  
  14. int main()
  15. {
  16. DDRA = 0xFF;
  17. DDRB = 0x01;
  18. DDRA = 0xFF; // port A wyjscia
  19.  
  20. TCCR0 = (1 << WGM01) | (1 << CS01); // tryb CTC i preskaler 8
  21. TIMSK |= (1 << OCIE0); // przerwanie od porownania
  22. OCR0 = 125; // 1MHz z presk. 8 -> 0.001s przy 125 na OCR0
  23.  
  24. sei();
  25.  
  26. while(1)
  27. {
  28. if (przelaczEkran == 1)
  29. {
  30. // przelaczenie_ekranu
  31.  
  32. przelaczEkran = 0;
  33. }
  34.  
  35. if (tickDiody == 1)
  36. {
  37. PORTB ^= (1 << PB0);
  38. tickDiody = 0;
  39. }
  40.  
  41. if (sekundy > 9)
  42. {
  43. sekundy = 0;
  44. }
  45.  
  46. wyswietlLiczbe(sekundy);
  47. }
  48. }
  49.  
  50. ISR(TIMER0_COMP_vect)
  51. {
  52. milisekundy++;
  53.  
  54. if (milisekundy % 25 == 0)
  55. {
  56. przelaczEkran = 1;
  57. }
  58.  
  59. if (milisekundy == 500)
  60. {
  61. tickDiody = 1;
  62. }
  63.  
  64. if (milisekundy == 1000)
  65. {
  66. sekundy++;
  67. tickDiody = 1;
  68. milisekundy = 0;
  69. }
  70.  
  71. }
  72.  
  73. void wyswietlLiczbe(int liczba)
  74. {
  75. switch (liczba)
  76. {
  77. case 1:
  78. PORTA = 0b00000110;
  79. break;
  80.  
  81. case 2:
  82. PORTA = 0b01011011;
  83. break;
  84.  
  85. case 3:
  86. PORTA = 0b01001111;
  87. break;
  88.  
  89. case 4:
  90. PORTA = 0b01100110;
  91. break;
  92.  
  93. case 5:
  94. PORTA = 0b01101101;
  95. break;
  96.  
  97. case 6:
  98. PORTA = 0b01111101;
  99. break;
  100.  
  101. case 7:
  102. PORTA = 0b00000111;
  103. break;
  104.  
  105. case 8:
  106. PORTA = 0b01111111;
  107. break;
  108.  
  109. case 9:
  110. PORTA = 0b01101111;
  111. break;
  112.  
  113. default:
  114. PORTA = 0b00111111; // 0
  115. break;
  116. }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement