Napisałem program jak poniżej gdy wprowadzam wartości portu B bez pętli wszystko działa jak należy jednak kiedy dodaje ify by móc wykorzystać przyciski do ustawienia portu B nie dzieje się nic. Wartości jakie należy ustawić przeliczałem dwa razy a więc powinno być wszystko ok. Płytka też działa Prawdopodobnie jakoś źle stosuje pętle jednak nie wiem gdzie popełniam błąd czy mógłby ktoś pomóc?
Przyciski na wejściach PD2...PD5. Płytka wykonana według schematu:
![[C] Program obsługujący przyciski ATtiny2313 [C] Program obsługujący przyciski ATtiny2313](https://obrazki.elektroda.pl/2916665900_1306593242_thumb.jpg)
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
/* Wszystkie linie portu B będą wyjściami */
DDRB = 0xff;
PORTB = 0xff;
/* PWszystkie linie portu D będą wejściami, PD2...PD5 podciągnięte do VCC */
DDRD = 0x00;
PORTD = 0x3c;
/* Początek nieskończonej pętli */
while(1)
{
if(!(PIND & 0x38))
{
PORTB=0xFA;
_delay_ms(100);
}
if(!(PIND & 0x34))
{
PORTB=0xDD;
_delay_ms(100);
}
if(!(PIND & 0x2C))
{
PORTB=0xDE;
_delay_ms(100);
}
if(!(PIND & 0x1C))
{
PORTB=0xF9;
_delay_ms(100);
}
}
}
Przyciski na wejściach PD2...PD5. Płytka wykonana według schematu: