Forum: Compiler & IDEs AVR: Skip if Bit in I/O Register is Cleared (SBIC)


von Uhu U. (uhu)


Lesenswert?

Der Befehl
1
  sbic  PINB, PINB0
führt zu der Fehlermeldung:
1
Error: number must be positive and less than 32

PINB ist definiert als _SFR_IO8 (0x03) (I/O-Register 3) und führt 
letztlich zu dem Wert 0x23. Formal hat gas also recht, konsistent zum 
Definitionssystem für die AVRs ist es wohl nicht.

Leider ist es mir noch nicht gelungen, den Preprozessor-Output zu 
konservieren, den gas zu fressen bekommt - die Option -save-temps ist 
für .s-Files wirkungslos.

Wie ist das mit SBIC gedacht? Ich möchte das Problem ungern mit einem 
Hack umgehen.


SBIC – Skip if Bit in I/O Register is Cleared
Description: This instruction tests a single bit in an I/O Register and 
skips the next instruction if the bit is set. This instruction operates 
on
the lower 32 I/O Registers – addresses 0-31.

Syntax:            SBIC A,b
Operands:          0 ≤ A ≤ 31, 0 ≤ b ≤ 7
Program Counter:   PC ← PC + 1, Condition false - no skip
                   PC ← PC + 2, Skip a one word instruction
                   PC ← PC + 3, Skip a two word instruction

von Peter II (Gast)


Lesenswert?

Uhu Uhuhu schrieb:
> Wie ist das mit SBIC gedacht? Ich möchte das Problem ungern mit einem
> Hack umgehen.

versteht dein Problem nicht. sbic ist für Register (R0-R31) gedacht und 
nicht für einen Port.
Es geht also damit nicht.

von ewfewf (Gast)


Lesenswert?

Peter II schrieb:
>
> sbic ist für Register (R0-R31) gedacht
Ich dachte für Register ist sbRc zuständig?

von Ralf (Gast)


Lesenswert?

Uhu Uhuhu schrieb:
> führt zu der Fehlermeldung:
bei mir gibt's keinen Fehler!?

von Uhu U. (uhu)


Lesenswert?

Ralf schrieb:
> Uhu Uhuhu schrieb:
>> führt zu der Fehlermeldung:
> bei mir gibt's keinen Fehler!?

Ich hab ATmega88 eingestellt. Geht der bei dir?
Welche gcc-Version benutzt du?

Meine ist gcc version 4.6.0 (GCC)

von MWS (Gast)


Lesenswert?

1
sbic _SFR_IO_ADDR(PINB), PINB0

von Uhu U. (uhu)


Lesenswert?

MWS schrieb:
>
1
sbic _SFR_IO_ADDR(PINB), PINB0

Schön ist es nicht, aber geht. Danke.

von MWS (Gast)


Lesenswert?

Uhu Uhuhu schrieb:
> Schön ist es nicht, aber geht. Danke.
Bitte. Mehr Info hier:
http://www.nongnu.org/avr-libc/user-manual/group__avr__sfr__notes.html

von Ralf (Gast)


Lesenswert?

Ports und Assembler hatte ich auch mal probiert, habe noch mal nach 
gesehen: Ich hatte damals (rotzfrech) einfach die Zahl eingetragen... 
mein Fehler.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.