vonar napisał: atom1477, przecież o ile jakieś przerwanie w międzyczasie nie zmienia Portd.5 to kod
Zaloguj się, aby zobaczyć kod
w końcu ustawi Portd.5.
Nie chodzi o to żeby ustawił w końcu, tylko w momencie kiedy piszesz Pind.5 = 1:
Zaloguj się, aby zobaczyć kod
Stosujesz raz:
Zaloguj się, aby zobaczyć kod
raz:
Zaloguj się, aby zobaczyć kod
a raz
Zaloguj się, aby zobaczyć kod
co by sugerowało że te 3 instrukcje robią co innego.
Skoro szukasz pomocy na forum to może po prostu dostosuj się do naszych rad?
I zmień Pind.5 = 1 na Portd.5 = 1.
vonar napisał: No ale Portd.5 zamiast Pind.5 byłoby przejrzyściej.
W ogóle przejrzyściej było by stosować ten zapis jeszcze zamiast Set Portd.5.
xury napisał: Tysiące razy było. Do rejestru port zapisujemy a z rejestru pin czytamy.
Ale w procesorze. Czyli pisząc w asm albo w C, albo jeszcze w jakimś innym normalnym środowisku. Piszę środowisku a nie języku bo BASIC jako język nie jest zły.
xury napisał: Tysiące razy było. Do rejestru port zapisujemy a z rejestru pin czytamy.
Czyli nie wiadomo czy BASCOM tego nie konwertuje bo on cuda może robić. Poza tym zależnie od wersji może się różnie zachowywać.
Dlatego dla zwiększenia przenośności kodu (co w ogóle jest masakrą żeby mieć przenośny kod dla tego samego procka ale pomiędzy różnymi wersjami kompilatora) najbezpieczniej pisać po prostu Portd.5 = 1.
2rs232 napisał: W nowszych atmegach np. m644, m48, m88 możemy wykorzystywać zapis "1" do negacji stanu portu.
Cytat: 14.2.2 Toggling the pin
Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn.
Note that the SBI instruction can be used to toggle one single bit in a port.
A tu już w ogóle była by masakra bo zależnie od tego czy BASCOM wcześniej zamieni PIN na PORT to zachowanie było by różne.
Na szczęście tutaj mamy procesor ATTiny2313 więc to nie występuje.