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

Atmega8 C dwie wersje programiku, tylko jedna działa.

budus2 15 Mar 2010 21:10 989 1
REKLAMA
  • #1 7834639
    budus2
    Poziom 12  
    Witam. Zacząłem sobie programować uC w C i już na początku mam problem.
    Może mi ktoś wyjaśnić czemu pierwszy program działa, a drugi nie?
    Ten działa
    int main(void)
    {
      
      // Wszystkie linie portu D będą wyjściami 
       DDRD = 0xFF;   		 	// 0xFF binarnie 1111 1111 
    	PORTD = 0x03;
       DDRC = 0x00;    			// Linie portu C będą wejściami
    	PORTC = 0xFF;  			// z podciąganienm- jest stan wysoki
    
      for(;;)
      {   			
    	if(!(PINC & 0x01))
    	{
     _delay_ms(50);
    	PORTD = PORTD + 1;
    	}
      }
    
    }


    A ten nie działa:/
    int main(void)
    {
      
      // Wszystkie linie portu D będą wyjściami 
       DDRD = 0xFF;   		 	// 0xFF binarnie 1111 1111 
    	PORTD = 0x03;
       DDRC = 0x00;    			// Linie portu C będą wejściami
    	PORTC = 0x00;  			// stan niski bez podciągania
    
      for(;;)
      {   			
    	if(PINC & 0x01)            //Jeśli pojawi się stan wysoki czyli kiedy nacisnę
                                                 // guzik powinno wykonać instrukcę
    	{
     _delay_ms(50);
    	PORTD = PORTD + 1;
    	}
      }
    
    }


    Przeniesiono z Programowanie Ogólne. - arnoldziq
  • REKLAMA
  • #2 7837483
    Kabuto15
    Poziom 19  
    Podpowiem, że błędne jest sprawdzanie przycisku na porcie C. Zobacz co jest wynikiem iloczynu logicznego PINC&0x01.
REKLAMA