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
1 | .equ LED_port = PORTA |
2 | .equ LED_bit = 0 |
3 | |
4 | SBI LED_port, LED_bit |
Grüße, Peter
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 |
1 | .macro LED_ein |
2 | sbi PORTA, 0 |
3 | .endmacro |
4 | |
5 | ;... |
6 | LED_ein |
7 | ;... |
Grüße, Peter
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...*
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
Ja, mit
1 | #define AusgangA1 PORTB,1 |
2 | ;... |
3 | SBI AusgangA1 |
funktionierts so wie gewünscht. Vielen Dank für die Hilfe euch allen :-) *auf #define wär ich wohl nie gekommen...*
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.