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

Attinz 2313 [C] problem z nazwami portow

piotrek7700 27 Maj 2009 22:19 719 5
REKLAMA
  • #1 6583462
    piotrek7700
    Poziom 16  
    Dlaczego ten if w którym wstawiłem pilot, z wcześniej zdefiniowanego wyrażenia wywala mi błąd?
    jak mozna poprawic ten kod aby uzyskać dostęp do konkretnych lini portów i pinów? zamiast wszędzie wstawiać nazwa portu & ... i przesuwać bity?
    zaczynam z C dopiero...

    #include <avr\io.h>
    #include <inttypes.h>
    #include <stdbool.h>
    
    #define pilot =((PORTB & 16)>>4); 
    #define przycisk =(PORTB & 8)>>3;
    #define otwarta =(PORTB & 128)>>7;
    #define zamknieta = (PORTB & 64)>>6;
    
    
    int main()
    {DDRD=255; //port d jako wyjscie
    DDRB=0; //port b jako wejscie
    PIND=255; //wejcie podciagniete do VCC
    PORTB=0; //wyjscia zwarte do masy
    //unsigned char pomoc=0;
    unsigned char stan=0;
    while (1)
    {
    	if (pilot)//jesli nacisniety przycisk na pilocie
    	{
    		stan++;
    	}
    
    }
    return 0;
    }
    
  • REKLAMA
  • REKLAMA
  • REKLAMA
  • #4 6583585
    dawid512
    Poziom 32  
    Gdy rozpiszesz binarnie liczbę 16 i przesuniesz o 4 miejsca w prawo to otrzymasz?
  • REKLAMA
  • #5 6583649
    piotrek7700
    Poziom 16  
    wtedy otrzymam 1.
    Widziałem gdzieś zapis
    #define pilot (bit_is_set(PINB,PB4), czy w ten sposób dostanę się do PB4?
  • #6 6583805
    dawid512
    Poziom 32  
    Tak, proponuję używać symulatora.
REKLAMA