/* * GccApplication2.c * * Created: 03.10.2018 18:02:37 * Author : student */ #include #include #include #include // te makra wywołuje framework // tu piszemy minimum kodu, resztę wewnątrz pętli w main() // komunikacja pomiędzy tymi funkcjami za pomoca zmiennych globalnych volatile int tablica[] = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B, 0x5F, 0x70, 0x7F, 0x7B }; volatile int ix = 0; volatile int sw1=0; volatile int sw2=0; ISR(INT0_vect) { ix=9; TIMSK=_BV(OCIE1A); OCR1A=0x7A0; } ISR(INT1_vect) { OCR1A=0x3D0; } ISR(TIMER1_COMPA_vect) { if(ix>0) ix--; TCNT1=0; } int main(void) { // same jedynki => ustawiamy na wyjście DDRB=0xFF; //PORTB=tablica[ix]; // 4 jedynki, 4 zera => 4 doiody powinny sie zapalic sei(); TCNT1=0; TCCR1A = _BV(WGM10)|_BV(WGM11); TCCR1B = _BV(CS12) | _BV(CS10) | _BV(WGM13) | _BV(WGM12); PORTB=~0x1; //TIMER1_COMPA_vect MCUCR = _BV(ISC11) | _BV(ISC01); GICR = _BV(INT0) | _BV(INT1); OCR1A=0x7A0; while (1) { sleep_mode(); // TIFR=_BV(OCIE1A); /* if(sw1==1){ TCNT1=0; OCR1A=0x7A0; sw1=0; } if(sw2==1){ TCNT1=0; OCR1A=0x2620; sw2=0; } */ //PORTB = PORTB<<1; PORTB=tablica[ix]; if(ix==0) TIMSK=~_BV(OCIE1A); } }