Advertisement
Guest User

Untitled

a guest
Dec 16th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. // ********************************************
  2. // Project:
  3. // Author:
  4. // Module description:
  5. // ***********************************************************
  6.  
  7. #include <avr\io.h> // Most basic include files
  8. #include <avr\interrupt.h> // Add the necessary ones
  9. #define F_CPU 11059200U
  10. #include <avr\signal.h> // here
  11.  
  12. uint8_t Koduj(uint8_t wartosc)
  13. {
  14. uint8_t wynik = 0;
  15. switch(wartosc)
  16. {
  17. // PPPPPPPP
  18. // AAAAAAAA
  19. // 76543210
  20. case 0 : wynik = 0b00111111; break;
  21. case 1 : wynik = 0b00000110; break;
  22. case 2 : wynik = 0b01011011; break;
  23. case 3 : wynik = 0b01001111; break;
  24. case 4 : wynik = 0b01100110; break;
  25. case 5 : wynik = 0b01101101; break;
  26. case 6 : wynik = 0b01111101; break;
  27. case 7 : wynik = 0b00000111; break;
  28. case 8 : wynik = 0b01111111; break;
  29. case 9 : wynik = 0b01101111; break;
  30. }
  31. return wynik;
  32. }
  33.  
  34.  
  35. void wyswietl(uint16_t counter){
  36. uint8_t tab[4] = {0,0,0,0};
  37. uint8_t ports[4] = {_BV(PE4), _BV(PE5), _BV(PE6), _BV(PE7)};
  38. uint8_t length = 1;
  39. if(counter > 10){
  40. tab[1] = counter%10;
  41. counter/=10;
  42. tab[0] = counter;
  43. length = 2;
  44. }else if(counter > 100){
  45. tab[2] = counter%10;
  46. counter/=10;
  47. tab[1] = counter%10;
  48. counter/=10;
  49. tab[0] = counter;
  50. length = 3;
  51. }else if(counter > 1000){
  52. tab[3] = counter%10;
  53. counter/=10;
  54. tab[2] = counter%10;
  55. counter/=10;
  56. tab[1] = counter%10;
  57. counter/=10;
  58. tab[0] = counter;
  59. length = 4;
  60. }else{
  61. tab[0] = counter;
  62. }
  63.  
  64. for(int i=0;i<length;i++){
  65. PORTA = Koduj(tab[i]);
  66. PORTE = ports[i];
  67. }
  68.  
  69.  
  70. }
  71. uint8_t start = _BV(PE4);
  72. volatile uint8_t i = 1;
  73. volatile uint8_t state = 0;
  74. ISR(TIMER1_COMPA_vect){
  75. i = ( i > 3 ) ? 1 : i+1;
  76. state = 1;
  77. }
  78.  
  79.  
  80. int main(void) {
  81.  
  82. DDRA = 0xFF;
  83. DDRE = 0xFF;
  84. PORTE = start;
  85. PORTA = Koduj(i);
  86.  
  87. TCCR1B = _BV(CS10) | _BV(CS11) | _BV(WGM12);
  88. OCR1A = 100;
  89.  
  90. TIMSK |= _BV(OCIE1A);
  91.  
  92. uint16_t c = 0;
  93.  
  94. // sei();
  95.  
  96. uint8_t state4 = 0;
  97. uint8_t buttonState4 = 0;
  98.  
  99. uint8_t state5 = 0;
  100. uint8_t buttonState5 = 0;
  101. while(1) {
  102. if(((PIND & _BV(PD4)) == 0) && buttonState4 == 0){
  103. state4 = !state4;
  104. buttonState4 = 1;
  105. }
  106.  
  107. if((PIND & _BV(PD4)) != 0){
  108. buttonState4 = 0;
  109. }
  110.  
  111. if(state4){
  112. c++;
  113. state4 = 0;
  114. }
  115.  
  116. wyswietl(c);
  117. // PORTA = Koduj(c);
  118.  
  119. // if((TIFR & _BV(OCF1A)) == _BV(OCF1A)){
  120. // i = ( i > 3 ) ? 1 : i+1;
  121. // PORTE = start << i-1;
  122. // PORTA = Koduj(i);
  123. // TIFR |= _BV(OCF1A);
  124. // }
  125. }
  126.  
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement