PB0=0 - problem

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Wojtek
Moderator
Posty: 2606
Rejestracja: 04 sie 2002, 19:00
Lokalizacja: --
Kontakt:

PB0=0 - problem

Post autor: Wojtek » 23 mar 2004, 22:11

Natknąłem się na problem przy pisaniu różnych "ćwiczeń" :) w C dla AVR AT90S2313 - robię to pod AVR Studio 3.56 i AVRGCC 3.2. Chcę aby na wyjściu 0 portu B pojawiło się zero. Robię to tak:


#include <io.h>
int main(void)
{
DDRB=0xff;
PORTB=0xff;
while(1)
{
PB0=0;
}
}


Dla PB0=0 otrzymuję błąd przypisania, jeżeli w to miejsce napiszę
np. PORTB&=0xfe lub PORTB=0xfe to wszystko jest ok, symulator to przyjmuje również.
Wydawało misię że mogę używać PB0 gdyż jest to zdefiniowane w bibliotece. Może mi ktoś to wyjaśnić.

Gość

Post autor: Gość » 24 paź 2004, 7:12

PB0 to chyba nie zmienna, tylko stała o predefiniowanej w pliku *.INC wartości 0.
Nie wiem jak jest w C, ale w asemblerze w celu przypisania jej nowej wartości trzeba by było ponownie użyć dyrektywy .DEF, co raczej nie ma sensu, a problemu też nie rozwiąże.
Trzeba chyba napisać jakoś tak:
PORTB=0xfe
albo coś w stylu:
CBI PORTB,PB0 ;clear bit numer 0 w rejestrze i/o B.

Wojtek
Moderator
Posty: 2606
Rejestracja: 04 sie 2002, 19:00
Lokalizacja: --
Kontakt:

Post autor: Wojtek » 24 paź 2004, 7:53

Tak masz rację już mi to wcześniej wyjaśniono :) jak zaczynałem dopiero zabawę z uC i teraz już wiem.

ODPOWIEDZ