Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. #include <avr/io.h>
  2. #include <avr/interrupt.h>
  3.  
  4. static volatile uint8_t Seg7Code[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  5.  
  6. static volatile uint8_t Delay[] = {0, 50, 25, 16, 13, 10, 8, 7, 6, 5}; //[0] <- Error ; [0][1] <- Aufgabenbedingt ungültig
  7.  
  8. static volatile int Position = 4, toggle = 0, i = 0;
  9.  
  10. void set(){
  11. PORTC = Seg7Code[Position];
  12.  
  13. i = 0;
  14. }
  15.  
  16. void init(){
  17. DDRA |= 0xFF; //Summer
  18. DDRC |= 0xFF; //seg7-Anzeige
  19.  
  20. DDRD &=~ ((1 << PD2) | (1 << PD3));
  21. PORTD |= (1 << PD2) | (1 << PD3);
  22.  
  23. GICR |= (1 << INT0) | (1 << INT1);
  24. MCUCR |= (1 << ISC01) | (1 << ISC11);
  25.  
  26. TCCR1B |= (1 << WGM12) | (1 << CS10);
  27.  
  28. OCR1A = 400; //0.1 ms
  29.  
  30. sei();
  31. }
  32.  
  33. ISR(INT0_vect){//+100Hz
  34. cli();
  35.  
  36. Position = (Position == 9) ? Position : Position + 1;
  37.  
  38. set();
  39.  
  40. sei();
  41. }
  42.  
  43. ISR(INT1_vect){//-100Hz
  44. cli();
  45.  
  46. Position = (Position == 2) ? Position : Position - 1;
  47.  
  48. set();
  49.  
  50. sei();
  51. }
  52.  
  53. ISR(TIMER1_COMPA_vect){
  54. if(i == Delay[Position]){
  55. PORTA = (toggle == 0) ? 0xFF : 0x00;
  56.  
  57. toggle = (toggle == 0) ? 1 : 0;
  58.  
  59. i = 0;
  60. }
  61. else i++;
  62. }
  63.  
  64. int main(){
  65. init();
  66.  
  67. PORTC = Seg7Code[Position];
  68.  
  69. TIMSK |= (1 << OCIE1A);
  70.  
  71. while(1){}
  72.  
  73. return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement