Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <avr/interrupt.h>
- static volatile uint8_t Seg7Code[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- static volatile uint8_t Delay[] = {0, 50, 25, 16, 13, 10, 8, 7, 6, 5}; //[0] <- Error ; [0][1] <- Aufgabenbedingt ungültig
- static volatile int Position = 4, toggle = 0, i = 0;
- void set(){
- PORTC = Seg7Code[Position];
- i = 0;
- }
- void init(){
- DDRA |= 0xFF; //Summer
- DDRC |= 0xFF; //seg7-Anzeige
- DDRD &=~ ((1 << PD2) | (1 << PD3));
- PORTD |= (1 << PD2) | (1 << PD3);
- GICR |= (1 << INT0) | (1 << INT1);
- MCUCR |= (1 << ISC01) | (1 << ISC11);
- TCCR1B |= (1 << WGM12) | (1 << CS10);
- OCR1A = 400; //0.1 ms
- sei();
- }
- ISR(INT0_vect){//+100Hz
- cli();
- Position = (Position == 9) ? Position : Position + 1;
- set();
- sei();
- }
- ISR(INT1_vect){//-100Hz
- cli();
- Position = (Position == 2) ? Position : Position - 1;
- set();
- sei();
- }
- ISR(TIMER1_COMPA_vect){
- if(i == Delay[Position]){
- PORTA = (toggle == 0) ? 0xFF : 0x00;
- toggle = (toggle == 0) ? 1 : 0;
- i = 0;
- }
- else i++;
- }
- int main(){
- init();
- PORTC = Seg7Code[Position];
- TIMSK |= (1 << OCIE1A);
- while(1){}
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement