logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AtMega32][C]Podłączenie przycisków

Kecio 25 Sie 2010 00:37 1383 2
REKLAMA
  • #1 8435192
    Kecio
    Poziom 2  
    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;
    }
    
  • REKLAMA
  • #3 8436163
    Kecio
    Poziom 2  
    No nie wyłączył... Dzięki za pomoc.
REKLAMA