Mam pytanie odnośnie poniższego kodu. Przy zamianie przycisku z PC7 na PC4 program zapętla się w zaznaczonym miejscu (bez przyciskania jakichkolwiek przycisków). W takiej wersji jak poniżej działa poprawnie. Dlaczego?
#ifndef F_CPU
#define F_CPU 16000000
#endif
#include <avr/io.h>
void Sound(int duration, int pulses)
{
volatile int i;
while(duration--)
{
for(i = pulses ; i > 0; i--);
PORTA ^= (1 << 7);
}
}
int main(void)
{
char pom=0;
DDRA |= (1 << PA7)
DDRC=0x00;
PORTC=0xff;
do{
if (bit_is_clear(PINC, PC6))
{
Sound (500,300);
if (pom==0)
pom=1;
else
pom=2;
}
if (bit_is_clear(PINC, PC7))
{
Sound (500,300); //tutaj program się zapętla, tak jakby przycisk był wciśnięty.
if (pom==2)
pom=1;
else
pom=0;
}
}while(1);
return 0;
}