// Programowanie mikrokontrolerow 2015/2016, Wydzial Fizyki UW // Rozwiazanie zadania Bomba // Obsluga przyciskow i diod // // Wymagane polaczenia w ukladzie ZL15AVR: // PA0 - LED0 // PA1 - LED1 // PB0 - SW0 // PB1 - SW1 // PB2 - SW2 // PB3 - SW3 // // Autorzy: Pawel Klimczewski, Bartlomiej Zglinicki #include #include //--------------------------------------------------------------------------- void configure_pins() { // Konfiguruje wyprowadzenia PA0 i PA1 jako wyjscia DDRA |= 1 << PA0 | 1 << PA1; } //--------------------------------------------------------------------------- int main() { configure_pins(); uint8_t a = 1; // Stan bomby: 0 - bomba rozbrojona; 1 - bomba uzbrojona while (true) { // Sprawdzam, czy przycisk rozbrojenia (SW1) jest nacisniety if((PINB & 1 << PB1) == 0) { // Sprawdzam, czy bomba jest uzbrojona if(a) { // Rozbrojenie bomby i zapalenie diody D0 a = 0; PORTA |= 1 << PA0; } } // Sprawdzam, czy nacisniety jest przycisk inny niz przycisk rozbrojenia if ((PINB & (1 << PB0 | 1 << PB2 | 1 << PB3)) != ((1 << PB0 | 1 << PB2 | 1 << PB3))) { // Sprawdzam, czy bomba jest uzbrojona if(a) { // Wybuch bomby - miganie diody D1 while(true) { PORTA ^= 1 << PA1; // Zmiana stanu swiecenia diody na przeciwny _delay_ms(500); // Czekam 500 ms } } } } return 0; } //---------------------------------------------------------------------------