Hallo, Ich überarbeite gerade meine libs die ich geschrieben habe. Jetzt möchte ich zu den einzelnen files (z.B. MAX7219) eine Header-datei schreiben, so daß ich nicht immer den Header vom Programm ändern muss. Das dort dann die Portdefinition stehen ist klar. Aber ich würde auch gerne die Speicher definitionen reinschreiben. also ; Port_config .equ MAX_Port = PortD .equ MAX_CS = 6 ; Konfigurationswerte .equ MAX_cascade = 0x01 ;Anzahl der kascadierten ICs .equ MAX_codeB = 0x0F ;welcher DIGIT ist 7seg .equ MAX_digit = 0x03 ;(scan-limit) fängt bei 0 an .equ MAX_bright = 0x0F ;Maximal (nur für init) .equ MAX_Shutdown = 0x01 ;normal operation .equ MAX_test = 0x01 ;alle LEDs an .dseg MAX_Copy: .byte = 8 .eseg MAX_config: .db 0x09, MAX_codeB, 0x0A, MAX_bright, 0x0B, MAX_digit, 0x0C, MAX_Shutdown, 0x0F, MAX_test, 0 _ somit habe ich allerdings, wenn ich mehrere header-dateien einfüge mehrere stellen von .dseg, .eseg und natürlich die ganzen .equ.... Geht das überhaupt? Ich würde es gerne vorher wissen, bevor ich meine ganzen libs umschreibe und teste. Andre
Hi >somit habe ich allerdings, wenn ich mehrere header-dateien einfüge >mehrere stellen von .dseg, .eseg und natürlich die ganzen .equ.... Solange nicht noch ein .cseg auftaucht, kein Problem. MfG spess
André M. schrieb: > somit habe ich allerdings, wenn ich mehrere header-dateien einfüge > mehrere stellen von .dseg, .eseg und natürlich die ganzen .equ.... Das braucht man garnicht unbedingt, es genügt die Definitionen als global, export oder wie immer das im jeweiligen Assembler heisst zu deklarieren und in Modulen die sich drauf beziehen als External oder so. Dann löst das der Linker auf. z.B.:
1 | PUBLIC start, main, loop |
2 | ORG 0H |
3 | START: Tu was... |
4 | |
5 | in einem anderen Modul |
6 | |
7 | EXTRN start |
8 | JMP start |
Dann setzt der Linker JMP 0 ein. Ganze Blöcke wie Port-Adressen bindet man als Header ein, aber für Labels ist das fehleranfällig: wenn du z.B. den Teil bei Start rausschmeisst, bekommst du Fehlermeldungen, wenn du aber Start in einem Header definiert hast nicht. Georg
Hi >Das braucht man garnicht unbedingt, es genügt die Definitionen als >global, export oder wie immer das im jeweiligen Assembler heisst zu >deklarieren und in Modulen die sich drauf beziehen als External oder so. Es geht um AVR-Assembler. Der kennt so etwas wie 'global',' export' nicht. MfG spess
André M. schrieb: > somit habe ich allerdings, wenn ich mehrere header-dateien einfüge > mehrere stellen von .dseg, .eseg und natürlich die ganzen .equ.... > > Geht das überhaupt? Selbstverstandlich.
1 | .DSEG |
2 | aa: .byte 1 |
3 | .CSEG |
4 | .ORG 0x0000 |
5 | _Reset: |
6 | ldi yl,byte1(RAMEND) |
7 | out SPL,yl |
8 | .DSEG |
9 | bb: .byte 1 |
10 | .CSEG |
11 | ldi yh,byte2(RAMEND) |
12 | out SPL+1,yh |
13 | .DSEG |
14 | cc: .byte 1 |
15 | .ESEG |
16 | ee: .byte 1 |
17 | .CSEG |
18 | sei
|
Die Startadresse fur CSEG natürlich nur einmal. Alles andere packt der Compiler schön hintereinander.
Ich danke euch allen für die Hilfe und Erklärungen. .... Andre
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.