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] sterowanie pętli za pomocą portu

krzysztof_swist 01 Cze 2008 10:54 1418 3
REKLAMA
  • #1 5202744
    krzysztof_swist
    Poziom 10  
    Witam!

    Siedzę nad tym już od kilku dni i nie mogę znaleźć rozwiązania. Chcę sterować pętlą (język C), konkretniej kończyć ją w momencie pojawienia się stanu logicznego 0 na jednym z bitów np. portu B. Napisałem program ale nie mam pojęcia jak odnosić się do wartości stanów tych bitów - zamiast 0 lub 1 wyświetla mi tylko wartość np. dla PB7 daje 7, PB6 daje 6.

    
            DDRB = 0x00;
    	PORTB = 0xFF;
    	
    	while((PINB,7)!=0)
    	{
    	if((PINB,6)==0)
    	{
    	podstawa_czasu+=100;
    	}
    	if((PINB,5)==0)
    	{
    	podstawa_czasu-=100;
    	}
    	}
    



    Przeczytałem gdzieś, że (PINB,x) daje stan logiczny w porcie B na pinie X ale to mi wybitnie nie działa bo pokazuje tylko konkretny numer portu czyli x, jak uzyskać stan logiczny?

    Proszę o pomoc.

    >Poprawiłem tytuł i przeniosłem do właściwego działu<
    [zumek]
  • REKLAMA
  • #2 5202793
    Balu
    Poziom 38  
    Sorry, przeczytałem to dwa razy nic z tego nie rozumiem... NIC.
    Zapis PINB,x jest jakiś wyjątkowo dziwny ludzie zwykli to robić poprzez _BV(x) lub PINB|MASKA czy też PINB &~MASKA...
  • REKLAMA
  • #3 5202853
    KowalD
    Poziom 17  
    a skad wziales to (PINB,x)?? bo ja to pierwszy raz sie z czyms takim spotykam... np: !(PIND & _BV(4))... obczaj co i kiedy zwroci i bedziesz w domu ;)... aaa... _BV(X) to to samo co (1<<X)
  • #4 5203355
    krzysztof_swist
    Poziom 10  
    Dzięki! Już działa tak jak powinno! Pozdrawiam serdecznie!
REKLAMA