bin gerade von C auf Assembler umgestiegen und verstehe da gerade was nicht: z.B. ist im include file PORTD im IO Bereich definiert, d.h. mit IN und OUT kann ich es ansprechen. Was ist aber jetzt wenn ich mit sbi oder sbic einzelne Bits setzen oder abfragen will, da müsste das ganze doch memory mapped sein, ich bräuchte also eine andere Adresse als PORTD (PORTD+0x20) oder was habe ich da nicht verstanden?
IN, OUT, SBIC, SBIS, CBI und SBI benötigen allesamt eine IO-Adresse (bei den letztgenannten Befehlen auch noch aus einem bestimmten Bereich). Memory-mapped geht prinzipiell über LD*- und ST*-Befehle.
Markus, Nein es muss NICHT memory-mapped sein. für IO-Ports, oder IO-Register: sbi portd,1 ;bit-1 setzen cbi portd,7 ;bit-7 löschen für Daten-Register sbr r16,4 ;= ori r16,4 cbr r16,4 ;= r16 AND (255-4) WICHTIG: sbr und cbr arbeiten NICHT bitweise wie SBI/CBI, sondern sind nichts weiter als ein ORI (ist auch der gleiche OP-Code) Das alles geht aber auch eindeutig aus dem AVR-Befehlssatz hevor, wenn Du in Assembler arbeiten willst MUSST Du den ohnehin SORGFÄLIG(!!) durcharbeiten. Jochen Müller
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.