Hallo,
ich habe ein bestehendes Projekt in ASM, welches aufgrund einer
Überarbeitung teilweise in C umgewandelt werden soll.
Grund ist, dass für neue angeschlossene Hardware schon C Funktionen
vorhanden sind. Also soll alles was evtl. mal noch geändert wird in C
alles andere möglichst in ASM bleiben.
Vorgehensweise bisher:
1. C Projekt angelegt
2. ASM Testfile mit einer Funktion angelegt, welche von C aus
erfolgreich angesprochen wird
1 | #include <xc.inc>
|
2 |
|
3 | GLOBAL _testroutine ; make it global accessible
|
4 | SIGNAT _testroutine,4000 ; give it a identifier
|
5 |
|
6 | ; definition of codesection
|
7 | psect JAWA,local,class=CODE,delta=2
|
8 | ; now we can start with the codesection
|
9 | _testroutine
|
10 | BANK1
|
11 | ADDLW 0x55
|
12 | RETURN
|
3. Versuch eine Funktion aus ASM Projekt einzufügen
-> Neben noch zu definierenden Variablen tritt insbesondere ein Syntax
Error auf bei den Macros zum BANK wechsel.
-> Testweiser BANK Wechsel in funktionierender Funktion oben brachte
keine Verbesserung. Nachfolgend die Definition des macros:
1 | BANK1 macro
|
2 | bsf RP0
|
3 | bcf RP1
|
4 | endm
|
Ürsprunglich war es einmal:
1 | BANK1 macro
|
2 | bsf STATUS,RP0
|
3 | bcf STATUS,RP1
|
4 | endm
|
Allerdings sind einige Definitionen in den spezifischen Dateien für
mpasm und XC8 ASM nicht gerade identisch in ihrer Handhabung.
Ersteres wird zu:
1 | BANK1 macro
|
2 | bsf ((STATUS)&07Fh), 5
|
3 | bcf ((STATUS)&07Fh), 6
|
4 | endm
|
und sollte somit richtig sein, wird aber nicht aufgelöst.
Letzteres zu:
1 | BANK1 macro
|
2 | bsf STATUS,((STATUS)&07Fh), 5
|
3 | bcf STATUS,((STATUS)&07Fh), 6
|
4 | endm
|
Habe es auch schon mit anderen Namen als BANK1 probiert, um evtl.
Reservierungen für andere Aufgaben zu umgehen, aber auch das hat keinen
endgültigen Erfolg gebracht. In der Dokumentation habe ich auch nichts
brauchbares gefunden.