www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Assemblerdirektiven für IO-Register?


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

Programmierumgebug ist AVR Studio, Assembler, Zielobjekt ein ATMega8.

Ich suche eine Möglichkeit, wie ich zum Beispiel "PORTB, 0" durch 
"Ausgang1" ersetzen kann.

Will nämlich möglichst einfach bei Bedarf nachträglich die Pinbelegung 
meiner IO-Ports ändern, ohne an sehr vielen Stellen im Quelltext 
rumzusuchen.

.def und .equ führten nicht zum Erfolg, komisch... ;)

Bliebe mir natürlich noch Suchen und Ersetzen, aber es gibt doch 
sicherlich einen komfortableren Weg?

Vielen Dank und Grüße,
Michael

Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.equ LED_port = PORTA
.equ LED_bit = 0

SBI LED_port, LED_bit

Grüße, Peter

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:

> Will nämlich möglichst einfach bei Bedarf nachträglich die Pinbelegung
> meiner IO-Ports ändern, ohne an sehr vielen Stellen im Quelltext
> rumzusuchen.
>
> .def und .equ führten nicht zum Erfolg, komisch... ;)

Warum nicht?
.include "m8def.inc"

.equ LED_PORT = PORTB
.equ LED_DDR  = DDRB
.equ LED_PIN  = PB4

     sbi DDRB, LED_PIN         ; am Led Port den Pin auf Ausgang stellen

loop:
     sbi LED_PORT, LED_PIN     ; den Pin auf 1
     cbi LED_PORT, LED_PIN     ; den Pin auf 0
     rjmp loop

Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.macro LED_ein
  sbi PORTA, 0
.endmacro

;...
LED_ein
;...


Grüße, Peter

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten,

die Aufteilung in z.b. "PORTB" und "2" ginge natürlich schon...

Vielleicht schweif ich mal kurz aus:
Ich habe auf meiner Platine zum Beispiel zwei Ausgangspins nebeneinander 
liegen. Verdrahtet ist der eine z.b. auf PB0, der andere allerdings auf 
PC7.

Will ich nun beide softwaretechnisch vertauschen, muss ich also sowohl 
den Port als auch den Pin ändern.
Wenn ich nun die "Smbole" änder, auch für die Ports, sind die anderen 
Ausgangspins am Port B und C natürlich daneben. Also wieder im Quelltext 
korrigieren.

Deswegen hätt ich am liebsten eine Lösung, wo ich zum Beispiel
"AusgangA1 = PORTB, 0" definiere, und dann nur noch "sbi AusgangA1" 
schreiben muss.

Grüße,
Michael *der wahrscheinlich mal wieder voll auf dem Schlauch steht...*

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In C kann man ganz bequem nur einen Namen für ein Bit zuweisen und der 
wird dann in das Byte und die Bitnummer auseinanderklamüsert.

Hier mal ein Beispiel:
http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip

Der Assembler kann ja auch #define, da müßte es auch irgendwie 
hinzukriegen sein.


Peter

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, mit
#define AusgangA1 PORTB,1
;...
SBI AusgangA1

funktionierts so wie gewünscht.

Vielen Dank für die Hilfe euch allen :-)


*auf #define wär ich wohl nie gekommen...*

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.