Strona 1 z 1

atmega 32 prosta centralka alarmowa

: pt, 5 czerwca 2015, 19:53
autor: CHOPIN66
Witam
Prosiłbym o pomoc?
Jestem początkujący programistą ,prosiłbym o wyrozumiałość.Buduję prostą centralkę alarmową na popularnym uC Atmeg32. Ma ona działać na zasadzie takiej że kiedy na ADC pojawi się stan wysoki to w tedy mikro kontroler ma zapalić diodę LED (do pinów PA0-PA7 przypisanych jest 8 diod LED i włączyć buzzer kiedy na ADC pojawi się stan niski mikro kontroler ma zapalić diodę LED (do pinów PB0-PB7 przypisanych jest 8 diod LED ).Po naciśnięciu przycisku TEST Atmega ma zapalić diodę LED i włączyć buzzer.

Kod pisany w C++

#include <avr/io.h>
#define LED1 PD0 //definicja LED1 (do którego pinu podłączony LED1
#define LED2 PD1 //definicja LED2 (do którego pinu podłączony LED2)
#define LED3 PD2 //definicja LED3 (do którego pinu podłączony LED3)
#define LED4 PD3 //definicja LED4 (do którego pinu podłączony LED4)
#define LED5 PD4 //definicja LED5 (do którego pinu podłączony LRD5)
#define LED6 PD5 //definicja LED6 (do którego pinu podłączony LED6)
#define LED7 PD6 //definicja LED7 (do którego pinu podłączony LED7)
#define LED8 PD7 //definicja LED8 (do którego pinu podłączony LED8)
#define LED9 PB0 //definicja LED8 (do którego pinu podłączony LED8)
#define LED10 PB1 //definicja LED1 (do którego pinu podłączony LED1
#define LED11 PB2 //definicja LED2 (do którego pinu podłączony LED2)
#define LED12 PB3 //definicja LED3 (do którego pinu podłączony LED3)
#define LED13 PB4 //definicja LED4 (do którego pinu podłączony LED4)
#define LED14 PB5 //definicja LED5 (do którego pinu podłączony LRD5)
#define LED15 PB6 //definicja LED6 (do którego pinu podłączony LED6)
#define LED16 PB7 //definicja LED7 (do którego pinu podłączony LED7)
#define KLAWISZ1_TEST_PC2 //definicja KLAWISZ 1(do którego pinu podłączony klawisz 1
#define ADCIN PA0 //definicja ADCIN (wejście ADC)
#define ADCIN PA1 //definicja ADCIN (wejście ADC)
#define ADCIN PA2 //definicja ADCIN (wejście ADC)
#define ADCIN PA3 //definicja ADCIN (wejście ADC)
#define ADCIN PA4 //definicja ADCIN (wejście ADC)
#define ADCIN PA5 //definicja ADCIN (wejście ADC)
#define ADCIN PA6 //definicja ADCIN (wejście ADC)
#define ADCIN PA7 //definicja ADCIN (wejście ADC)
int main(void)
{
//Uruchomienie ADC, wewnętrzne napiecie odniesienia, tryb pojedynczej konwersji, preskaler 128, wejście PIN5, wynik do prawej
ADCSRA = (1<<ADEN) //ADEN: ADC Enable (uruchomienie przetwornika)

//ADPS2:0: ustawienie preskalera, preskaler= 128
|(1<<ADPS0)
|(1<<ADPS1)
|(1<<ADPS2);

ADMUX = (1<<REFS1) | (1<<REFS0) //REFS1:0: Reference Selection Bits
//Internal 2.56V Voltage Reference with external capacitor at AREF pin
|(1<<MUX2) | (1<<MUX0); //Input Channel Selections

//ustawienie wejśc/wyjść
DDRD |= (1<<LED1) | (1<<LED2)|(1<<LED3) | (1<<LED4)|(1<<LED5) | (1<<LED6)|(1<<LED7)|(1<<LED8); //Ustawienie pinów sterujących diodami jako wyjścia
DDRC=0xff; //Nieużywane Piny na porcie C jako wyjścia
DDRC &=~ (1<<KLAWISZ); //Ustawienie pinu klawisza jako wejście
DDRC |=(1<<LED17)|(1<<BUZZER);
DDRA &=~ (1<<ADCIN); //Ustawienie Wejścia ADC
DDRB |= (1<<LED9) | (1<<LED10)|(1<<LED11) | (1<<LED12)|(1<<LED13) | (1<<LED14)|(1<<LED15)|(1<<LED16)
PORTC |= (1<<KLAWISZ); //Pull_up klawisz '


for(;;)//pętla główna
{
if(!(PINA & (1<<ADCIN PA0)))//jeśli pojawi się sygnał
{
ADCSRA |= (1<<ADSC); //ADSC: uruchomienie pojedynczej konwersji

while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji

if(ADC<10)//jeśli wynik ADC mniejszy od 10 gasi obydwie diody
{
PORTB |= (1<<LED9);
PORTC &=~ (1<<BUZZER);
}
else if(ADC<700)//jeśli 700>ADC>=10 LED1 świeci
{
PORTD |= (1<<LED1);
PORTC &=~ (1<<BUZZER);
}
else //jeśli ADC>=700 świecą obydwie diody
{
PORTD |= (1<<LED1);
PORTC |= (1<<BUZZER);
}


if(!(PINA & (1<<ADCIN PA1)))//jeśli pojawi sie sygnał
{
ADCSRA |= (1<<ADSC); //ADSC: uruchomienie pojedynczej konwersji

while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji

if(ADC<10)//jeśli wynik ADC mniejszy od 10 zapala diode i gasi buzzer
{
PORTB |= (1<<LED10);
PORTC &=~ (1<<BUZZER);
}
else if(ADC<700)//jeśli 700>ADC>=10 LED1 świeci
{
PORTD |= (1<<LED2);
PORTC &=~ (1<<BUZZER);
}
else //jeśli ADC>=700 świecą obydwie diody
{
PORTD |= (1<<LED2);
PORTC |= (1<<BUZZER);
}

{


if(!(PINA & (1<<ADCIN PA2)))//jeśli klawisz wciśniety
{
ADCSRA |= (1<<ADSC); //ADSC: uruchomienie pojedynczej konwersji

while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji

if(ADC<10)//jeśli wynik ADC mniejszy od 10 gasi obydwie diody
{
PORTB |= (1<<LED11);
PORTC &=~ (1<<BUZZER);
}
else if(ADC<700)//jeśli 700>ADC>=10 LED1 świeci
{
PORTD |= (1<<LED3);
PORTC &=~ (1<<BUZZER);
}
else //jeśli ADC>=700 świecą obydwie diody
{
PORTD |= (1<<LED3);
PORTC |= (1<<BUZZER);
}
if (TCNT1 >= 15625)
{

if(!(PINA & (1<<ADCIN PA3)))//jeśli klawisz wciśniety
{
ADCSRA |= (1<<ADSC); //ADSC: uruchomienie pojedynczej konwersji

while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji

if(ADC<10)//jeśli wynik ADC mniejszy od 10 gasi obydwie diody
{
PORTB |= (1<<LED12);
PORTC &=~ (1<<BUZZER);
}
else if(ADC<700)//jeśli 700>ADC>=10 LED1 świeci
{
PORTD |= (1<<LED4);
PORTC &=~ (1<<BUZZER);
}
else //jeśli ADC>=700 świecą obydwie diody
{
PORTD |= (1<<LED4);
PORTC |= (1<<BUZZER);
}



if(!(PINA & (1<<ADCIN PA4)))//jeśli klawisz wciśniety
{
ADCSRA |= (1<<ADSC); //ADSC: uruchomienie pojedynczej konwersji

while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji

if(ADC<10)//jeśli wynik ADC mniejszy od 10 gasi obydwie diody
{
PORTB |= (1<<LED13);
PORTC &=~ (1<<BUZZER);
}
else if(ADC<700)//jeśli 700>ADC>=10 LED1 świeci
{
PORTD |= (1<<LED5);
PORTC &=~ (1<<BUZZER);
}
else //jeśli ADC>=700 świecą obydwie diody
{
PORTD |= (1<<LED5);
PORTC |= (1<<BUZZER);
}

{

if(!(PINA & (1<<ADCIN PA5)))//jeśli klawisz wciśniety
{
ADCSRA |= (1<<ADSC); //ADSC: uruchomienie pojedynczej konwersji

while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji
}

if(ADC<10)//jeśli wynik ADC mniejszy od 10 gasi obydwie diody
{
PORTB |= (1<<LED14);
PORTC &=~ (1<<BUZZER);
}
else if(ADC<700)//jeśli 700>ADC>=10 LED1 świeci
{
PORTD |= (1<<LED6);
PORTC &=~ (1<<BUZZER);
}
else //jeśli ADC>=700 świecą obydwie diody
{
PORTD |= (1<<LED6);
PORTC |= (1<<BUZZER);
}


if(!(PINA & (1<<ADCIN PA6)))//jeśli klawisz wciśniety
{
ADCSRA |= (1<<ADSC); //ADSC: uruchomienie pojedynczej konwersji

while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji

if(ADC<10)//jeśli wynik ADC mniejszy od 10 gasi obydwie diody
{
PORTB |= (1<<LED15);
PORTD &=~ (1<<BUZZER);
}
else if(ADC<700)//jeśli 700>ADC>=10 LED1 świeci
{
PORTD |= (1<<LED7);
PORTC &=~ (1<<BUZZER);
}
else //jeśli ADC>=700 świecą obydwie diody
{
PORTD |= (1<<LED7);
PORTC |= (1<<BUZZER);
}

if(!(PINA & (1<<ADCIN PA7)))//jeśli klawisz wciśniety
{
ADCSRA |= (1<<ADSC); //ADSC: uruchomienie pojedynczej konwersji

while(ADCSRA & (1<<ADSC)); //czeka na zakończenie konwersji

if(ADC<10)//jeśli wynik ADC mniejszy od 10 gasi diode 1 buzer
{
PORTB |= (1<<LED16);
PORTC &=~ (1<<BUZZER);
}
else if(ADC<700)//jeśli 700>ADC>=10 LED1 świeci
{
PORTD |= (1<<LED8);
PORTC &=~ (1<<BUZZER);
}
else //jeśli ADC>=700 świec1 obydwie diody
{
PORTD |= (1<<LED8);
PORTC |= (1<<BUZZER);
}

if (PINC &(1<<KLAWISZ1_TEST_PC2)) ;
{
PORTC |= (1<<LED1);
PORTC |= (1<<BUZZER);
}
if (PINC &(1<<KLAWISZ1_TEST_PC2)) ;
{
PORTC |= (1<<LED2);
PORTC |= (1<<BUZZER);
}
}
}
}
Prosił bym o sprawdzenie czy w kodzie nie ma błędów a jeśli są to zaznaczenie ich żebym po prostu wiedział co jest nie tak?
Byłem z tym tematem na Elektrodzie ale tam nikt nie umie mi wytłumaczyć w sposób zrozumiały ewentualnych błędów będących w kodzie .
Dlatego proszę kolegów o pomoc . :D

Pozdrawiam

Re: atmega 32 prosta centralka alarmowa

: pt, 5 czerwca 2015, 21:19
autor: Tomasz Gumny
Zostaw w programie konfigurację ADC, czytanie napięcia z jednego wejścia (podłącz potencjometr) i sterowanie jednym LED, pokaż schemat i użyj tagu "code", żeby nie utracić formatowania. Niezależnie od tego poniższe definicje nie mają wielkiego sensu:
CHOPIN66 pisze:

Kod: Zaznacz cały

#define KLAWISZ1_TEST_PC2 //definicja KLAWISZ 1(do którego pinu podłączony klawisz 1  
   #define ADCIN PA0   //definicja ADCIN (wejście ADC)  
#define ADCIN PA1   //definicja ADCIN (wejście ADC)  
#define ADCIN PA2   //definicja ADCIN (wejście ADC) 
#define ADCIN PA3   //definicja ADCIN (wejście ADC)
#define ADCIN PA4   //definicja ADCIN (wejście ADC)
#define ADCIN PA5   //definicja ADCIN (wejście ADC)  
#define ADCIN PA6   //definicja ADCIN (wejście ADC) 
#define ADCIN PA7   //definicja ADCIN (wejście ADC)  

Re: atmega 32 prosta centralka alarmowa

: pt, 5 czerwca 2015, 21:33
autor: CHOPIN66
przesyłam schemat.
Tomasz Gumny pisze:Zostaw w programie konfigurację ADC, czytanie napięcia z jednego wejścia (podłącz potencjometr) i sterowanie jednym LED, pokaż schemat i użyj tagu "code", żeby nie utracić formatowania. Niezależnie od tego poniższe definicje nie mają wielkiego sensu:
CHOPIN66 pisze:

Kod: Zaznacz cały

#define KLAWISZ1_TEST_PC2 //definicja KLAWISZ 1(do którego pinu podłączony klawisz 1  
   #define ADCIN PA0   //definicja ADCIN (wejście ADC)  
#define ADCIN PA1   //definicja ADCIN (wejście ADC)  
#define ADCIN PA2   //definicja ADCIN (wejście ADC) 
#define ADCIN PA3   //definicja ADCIN (wejście ADC)
#define ADCIN PA4   //definicja ADCIN (wejście ADC)
#define ADCIN PA5   //definicja ADCIN (wejście ADC)  
#define ADCIN PA6   //definicja ADCIN (wejście ADC) 
#define ADCIN PA7   //definicja ADCIN (wejście ADC)  
Tak twierdzi znawca na Elektrodzie :D że tylko tak będzie działać a jak :D

Re: atmega 32 prosta centralka alarmowa

: pt, 5 czerwca 2015, 21:38
autor: Tomasz Gumny
Skoro podciągasz wejścia analogowe do VCC, to REF ustaw na AVCC.

Re: atmega 32 prosta centralka alarmowa

: pt, 5 czerwca 2015, 22:13
autor: CHOPIN66

Kod: Zaznacz cały

ADMUX  =  (0<<REFS1) | (1<<REFS0) //REFS1:0: Reference Selection Bits  
 //Internal 2.56V Voltage Reference with external capacitor at AREF pin 
  
Tak by to wyglądało?

Re: atmega 32 prosta centralka alarmowa

: pt, 5 czerwca 2015, 22:22
autor: Tomasz Gumny
Tak, ale jak będziesz pytał o każdą linijkę, to nas pogonią.

Re: atmega 32 prosta centralka alarmowa

: pt, 5 czerwca 2015, 22:28
autor: CHOPIN66
A w reszcie programu nie ma błędów? :D

Re: atmega 32 prosta centralka alarmowa

: pt, 5 czerwca 2015, 22:47
autor: Tomasz Gumny
Nie wiem, bo nie rozumiem co ma robić. Raz czytasz Port A jako wejście cyfrowe, potem mierzysz tam napięcie.
Uruchom najpierw czytanie przycisku i zapalanie LED, potem ADC i zmiana kanałów w ADMUX.

Re: atmega 32 prosta centralka alarmowa

: pt, 5 czerwca 2015, 23:27
autor: CHOPIN66
Dziękuję za pomoc

Re: atmega 32 prosta centralka alarmowa

: ndz, 7 czerwca 2015, 13:41
autor: CHOPIN66
Witam ponownie

Zmodyfikowałem program ,zrezygnowałem z ADC .Wejście jest na PORCIE C .
Do kompilacji użyłem WINAVR .
No i program nie kompiluje się ,wyskakują dwa błędy tak jak w załączniku.
Co te błędy mogą oznaczać?

Kod: Zaznacz cały

//częstotliwość zegara  
#define F_CPU 20000000L   
  
#include <avr/io.h>  
#include <util/delay.h>  
  
//definicja BUZZER (do którego pinu podłączony BUZZER)  
#define BUZZER PB0   
//definicja LED2 (do którego pinu podłączony LED1)   
#define LED1 PB1   
//definicja LED2 (do którego pinu podłączony LED2)   
#define LED2 PB2     
//definicja LED2 (do którego pinu podłączony LED3)   
#define LED3 PB3  
//definicja LED2 (do którego pinu podłączony LED4)   
#define LED4 PB4
 //definicja LED2 (do którego pinu podłączony LED5)   
#define LED5 PB5
     //definicja LED2 (do którego pinu podłączony LED6)   
#define LED6 PB6
//definicja LED2 (do którego pinu podłączony LED7)   
#define LED7 PB7 

//definicja LED2 (do którego pinu podłączony LED1)   
#define LED8 PD0   
//definicja LED2 (do którego pinu podłączony LED2)   
#define LED9 PD1     
//definicja LED2 (do którego pinu podłączony LED3)   
#define LED10 PD2  
//definicja LED2 (do którego pinu podłączony LED4)   
#define LED11 PD3
 //definicja LED2 (do którego pinu podłączony LED5)   
#define LED12 PD4
     //definicja LED2 (do którego pinu podłączony LED6)   
#define LED13 PD5
//definicja LED2 (do którego pinu podłączony LED7)   
#define LED14 PD6 
//definicja LED2 (do którego pinu podłączony LED7)   
#define LED15 PD7
#define PRZYCISK PC0
#define PIR1 PC1     
//definicja LED2 (do którego pinu podłączony LED3)   
#define PIR2 PC2  
//definicja LED2 (do którego pinu podłączony LED4)   
#define PIR3 PC3
 //definicja LED2 (do którego pinu podłączony LED5)   
#define PIR4 PC4
     //definicja LED2 (do którego pinu podłączony LED6)   
#define PIR5 PC5
//definicja LED2 (do którego pinu podłączony LED7)   
#define PIR6 PC6 
//definicja LED2 (do którego pinu podłączony LED7)   
#define PIR7 PC7        
// Pętla główna  
void main(void)  
{  
    //########### I/O ###########  
    DDRB  |= (1<<BUZER)|(1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4)|(1<<LED5)|(1<<LED6)|(1<<LED7); //Ustawienie pinów sterujących diodami  
                                         //jako wyjścia  
  
    PORTB |= (1<<BUZER)|(1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4)|(1<<LED5)|(1<<LED6)|(1<<LED7);    //Ustawienie stanu wysokiego na wyjściu   
                                 //sterującym LED1 (stan początkowy)
    DDRD  |= (1<<LED8)|(1<<LED9)|(1<<LED10)|(1<<LED11)|(1<<LED12)|(1<<LED13)|(1<<LED14)|(1<<LED15); //Ustawienie pinów sterujących diodami  
                                         //jako wyjścia  
  
    PORTD |= (1<<BUZER)|(1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4)|(1<<LED5)|(1<<LED6)|(1<<LED7);    //Ustawienie stanu wysokiego na wyjściu   
                                 //sterującym LED1 (stan początkowy)
	DDRC  &= ~(1<<PRZYCISK)|(1<<PIR1)|(1<<PIR2)|(1<<PIR3)|(1<<PIR4)|(1<<PIR5)|(1<<PIR6)|(1<<PIR7); //Ustawienie pinów sterujących diodami  
                                         //jako wyjścia  
  
    PORTC &= ~ (1<<PRZYCISK)|(1<<PIR1)|(1<<PIR2)|(1<<PIR3)|(1<<PIR4)|(1<<PIR5)|(1<<PIR6)|(1<<PIR7);    //Ustawienie stanu wysokiego na wyjściu   
                                 //sterującym LED1 (stan początkowy)							 							 
								  
     //########################## 
	  
      
   while (1) //Pętla główna  
   {  
   
   if(PINC & PRZYCISK PC0);
     {   
        PORTD |=(0<<LED15 PD7);// wyączenie diody LED8                    
        PORTB |=(0<<BUZZER PB0); //WYĄCZENIE BUZZERA  
     }                        
	else(PIN & PRZYCISK PC0);						   
      {
      	
      	PORTD |=(1<<LED15 PD7); //włączenie diody LED8
      	PORTB |=(1<<BUZZER PB0);//WŁĄCZENIE BUZZERA	  	   	  	  	  	   
    }
     if(PINC & PIR1 PC1);
     { 
	 
        PORTB |=(0<<LED1 PB1); //wyączenie diody LED1   
        PORTD |=(1<<LED8 PD0);// włączenie diody LED8                    
        PORTB |=(0<<BUZZER PB0); //WYĄCZENIE BUZZERA  
     }                        
	else(PIN & PIR1 PC1);						   
      {
      	PORTB |=(1<<LED1 PB1 );//włączenie diody LED1
      	PORTD |=(0<<LED8 PD0); //włączenie diody LED8
      	PORTB |=(1<<BUZZER PB0);//WŁĄCZENIE BUZZERA
		  } 
      if(PINC & PIR2 PC2);
     { 
	 
        PORTB |=(0<<LED2 PB2); //wyączenie diody LED1   
        PORTD |=(1<<LED9 PD1);// włączenie diody LED8                    
        PORTB |=(0<<BUZZER PB0); //WYĄCZENIE BUZZERA  
     }                        
	else(PIN & PIR2 PC2);						   
      {
      	PORTB |=(1<<LED2 PB2 );//włączenie diody LED1
      	PORTD |=(0<<LED9 PD1); //włączenie diody LED8
      	PORTB |=(1<<BUZZER PB0);//WŁĄCZENIE BUZZERA
		  }
	if(PINC & PIR3 PC3);
     { 
	 
        PORTB |=(0<<LED3 PB3); //wyączenie diody LED1   
        PORTD |=(1<<LED10 PD2);// włączenie diody LED8                    
        PORTB |=(0<<BUZZER PB0); //WYĄCZENIE BUZZERA  
     }                        
	else(PIN & PIR3 PC3);						   
      {
      	PORTB |=(1<<LED3 PB3 );//włączenie diody LED1
      	PORTD |=(0<<LED10 PD2); //włączenie diody LED8
      	PORTB |=(1<<BUZZER PB0);//WŁĄCZENIE BUZZERA
		  } 
	if(PINC & PIR4 PC4);
     { 
	 
        PORTB |=(0<<LED4 PB4); //wyączenie diody LED1   
        PORTD |=(1<<LED11 PD3);// włączenie diody LED8                    
        PORTB |=(0<<BUZZER PB0); //WYĄCZENIE BUZZERA  
     }                        
	else(PIN & PIR4 PC4);						   
      {
      	PORTB |=(1<<LED4 PB4 );//włączenie diody LED1
      	PORTD |=(0<<LED11 PD3); //włączenie diody LED8
      	PORTB |=(1<<BUZZER PB0);//WŁĄCZENIE BUZZERA
		  } 
	if(PINC & PIR5 PC5);
     { 
	 
        PORTB |=(0<<LED5 PB5); //wyączenie diody LED1   
        PORTD |=(1<<LED12 PD4);// włączenie diody LED8                    
        PORTB |=(0<<BUZZER PB0); //WYĄCZENIE BUZZERA  
     }                        
	else(PIN & PIR5 PC5);						   
      {
      	PORTB |=(1<<LED5 PB5 );//włączenie diody LED1
      	PORTD |=(0<<LED12 PD4); //włączenie diody LED8
      	PORTB |=(1<<BUZZER PB0);//WŁĄCZENIE BUZZERA
		  } 
	if(PINC & PIR6 PC6);
     { 
	 
        PORTB |=(0<<LED6 PB6); //wyączenie diody LED1   
        PORTD |=(1<<LED13 PD5);// włączenie diody LED8                    
        PORTB |=(0<<BUZZER PB0); //WYĄCZENIE BUZZERA  
     }                        
	else(PIN & PIR6 PC6);						   
      {
      	PORTB |=(1<<LED6 PB6 );//włączenie diody LED1
      	PORTD |=(0<<LED13 PD5); //włączenie diody LED8
      	PORTB |=(1<<BUZZER PB0);//WŁĄCZENIE BUZZERA
		  }
	if(PINC & PIR7 PC7);
     { 
	 
        PORTB |=(0<<LED7 PB7); //wyączenie diody LED1   
        PORTD |=(1<<LED14 PD6);// włączenie diody LED8                    
        PORTB |=(0<<BUZZER PB0); //WYĄCZENIE BUZZERA  
     }                        
	else(PIN & PIR1 PC1);						   
      {
      	PORTB |=(1<<LED7 PB7 );//włączenie diody LED1
      	PORTD |=(0<<LED14 PD6); //włączenie diody LED8
      	PORTB |=(1<<BUZZER PB0);//WŁĄCZENIE BUZZERA
		  } 
	if(PINC & PRZYCISK PC0);
     { 
	    PORTD |=(0<<LED14 PD6);// wyączenie diody LED8                    
        PORTB |=(0<<BUZZER PB0); //WYĄCZENIE BUZZERA  
     }                        
	else(PIN & PRZYCISK PC0);						   
      {
      	
      	PORTD |=(1<<LED14 PD6); //włączenie diody LED8
      	PORTB |=(1<<BUZZER PB0);//WŁĄCZENIE BUZZERA	  	   	  	  	  	   
    }
         
    }  
}  

Re: atmega 32 prosta centralka alarmowa

: ndz, 7 czerwca 2015, 22:22
autor: Tomasz Gumny
Znowu powielasz wielokrotnie całe nieuruchomione fragmenty programu

Kod: Zaznacz cały

 if(PINC & PRZYCISK PC0); // wyrażenie w nawiasie nie ma sensu, zresztą dzięki średnikowi warunek i tak nic nie robi
     {   
        PORTD |=(0<<LED15 PD7);// wyączenie diody LED8    // OR z zerem, nawet przesuniętym raczej nic nie zmieni. Jeśli zdefiniowałeś LED15 jako PD7, to po co tu powtarzasz?
        PORTB |=(0<<BUZZER PB0); //WYĄCZENIE BUZZERA  // j.w.
     }                       
   else(PIN & PRZYCISK PC0);  // co robi wyrażenie po else?! nie sądzę, żeby GCC dopuszczał taką składnię. Zresztą średnik i tak powoduje, że wartość wyrażenia jest nieistotna.
      {