Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. #define F_CPU 16000000
  2. #include <avr/io.h>
  3. #include <avr/interrupt.h>
  4. #include <util/delay.h>
  5.  
  6. #define seg_a ~(1<<PA0)
  7. #define seg_b ~(1<<PA1)
  8. #define seg_c ~(1<<PA2)
  9. #define seg_d ~(1<<PA3)
  10. #define seg_e ~(1<<PA4)
  11. #define seg_f ~(1<<PA5)
  12. #define seg_g ~(1<<PA6)
  13. #define seg_kropka ~(1<<PA7)
  14.  
  15. #define C0 (seg_a & seg_b & seg_c & seg_d & seg_e & seg_f)
  16. #define C1 (seg_b & seg_c)
  17. #define C2 (seg_a & seg_b & seg_d & seg_e & seg_g)
  18. #define C3 (seg_a & seg_b & seg_c & seg_d & seg_g)
  19. #define C4 (seg_b & seg_c & seg_f & seg_g)
  20. #define C5 (seg_a & seg_c & seg_d & seg_f & seg_g)
  21. #define C6 (seg_a & seg_c & seg_d & seg_e & seg_f & seg_g)
  22. #define C7 (seg_a & seg_b & seg_c)
  23. #define C8 (seg_a & seg_b & seg_c & seg_d & seg_e & seg_f & seg_g)
  24. #define C9 (seg_a & seg_b & seg_c & seg_d & seg_f & seg_g)
  25.  
  26.  
  27. #define W1 ~(1<<PC0)
  28. #define W2 ~(1<<PC1)
  29. #define W3 ~(1<<PC2)
  30. #define W4 ~(1<<PC3)
  31.  
  32.  
  33.  
  34.  
  35. volatile uint8_t setne,sekundy,dziesietne,dziesiatki;
  36. volatile uint8_t a=1,b=2,c=3,d=4;
  37.  
  38. volatile uint8_t tab1[] = {C0,C1,C2,C3,C4,C5,C6,C7,C8,C9};
  39.  
  40.  
  41.  
  42. int main(void) {
  43.  
  44. // USTAWIENIA ADC *****************************************************************
  45. ADMUX |= (1<<REFS0)|(1<<REFS1); // 1,1V VREF
  46. ADCSRA |= (1<<ADEN); // ADC ENABLE
  47. ADCSRA |= (1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2); // preskaler
  48.  
  49. // USTAWIENIA PORTÓW **************************************************************
  50.  
  51. DDRC |= 0xff;
  52. PORTC |= 0xff;
  53.  
  54. DDRA |= 0xff;
  55. PORTA |= 0xff;
  56.  
  57. // USTAWIENIA TIMERA 0 ************************************************************
  58.  
  59. TCCR0 |= (1<<CS00)|(1<<CS02); // preskaler 1024
  60. TCNT0 = 204;
  61. TIMSK |= (1<<TOIE0);
  62.  
  63. sei(); // globalne zezwolenie na przerwania
  64.  
  65. while(1) {
  66.  
  67. }
  68. }
  69. ISR (TIMER0_OVF_vect) {
  70. TCNT0 = 194;
  71. switch(a) {
  72. case 0:
  73. PORTC |= W4;
  74. PORTA |= 0xff;
  75. PORTC &= ~W1;
  76. PORTA = tab1[a];
  77. a++;
  78. break;
  79.  
  80. case 1:
  81. PORTC |= W1;
  82. PORTA |= 0xff;
  83. PORTC &= ~W2;
  84. PORTA = tab1[b];
  85. a++;
  86. break;
  87.  
  88. case 2:
  89. PORTC |= W2;
  90. PORTA |= 0xff;
  91. PORTC &= ~W3;
  92. PORTA = tab1[c];
  93. a++;
  94. break;
  95.  
  96. case 3:
  97. PORTC |= W3;
  98. PORTA |= 0xff;
  99. PORTC &= ~W4;
  100. PORTA = tab1[d];
  101. a=0;
  102. break;
  103. }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement