Assemblerdirektiven für IO-Register?

Gast #1267761
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
#1267813
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?
1
.include "m8def.inc"
2

3
.equ LED_PORT = PORTB
4
.equ LED_DDR  = DDRB
5
.equ LED_PIN  = PB4
6

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

9
loop:
10
     sbi LED_PORT, LED_PIN     ; den Pin auf 1
11
     cbi LED_PORT, LED_PIN     ; den Pin auf 0
12
     rjmp loop
Gast #1267913
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...*

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren