PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : #define und adressen setzten in asm30 - dspic



Pitt1986
04.06.2008, 16:04
hallo,

kann mir hier vielleicht jemand sagen wie man in dem asm30 definitionen machen kann.

bei den 18fxxxx geht es ja so:
#define RED LATB,0
bsf RED

nur wie geht es bei den dspic's bzw. beim asm30
des is echt ein witz ich arbeite mich da schon seit 2 tagen ein und kann 2 sachen einfach nicht finden. ich glaub die idioten von mc haben des einfach vergessen.
es gibt zwar so ne macro funktion aber mit dem geht es nicht, denn da muss man in die funktion gleich alles reinschreiben, also:
.macro GREEN
bset LATB,#0
.endm
nur des problem bei dem ist dass wenn ich die led wieder ausschalten will ne neue macro funktion brauch. und wenn ich testen will ob die led leuchtet und den port abfragen will müsste ich wieder eine macro funktion haben.

zu der zweiten sache.
ich weiss ebenfalls noch nicht wie ich adresse setzten kann, z.B. für die Interrupts.
Wie macht man des.

hab schon etliche datenblätter durch aber nirgends ist es richtig erklärt.

wäre sehr dankbar für hilfreiche antworten

mfg
pitt

Siro
10.06.2008, 17:02
Das Problem mit dem #define ist bei mir ebenso aufgetreten wie bei Dir
als ich auf den PIC24 umstieg. Das dies nicht mehr wie früher
funktioniert wurde mir von Microchip bestätigt. Eine Lösung
konnte mir dafür nicht gegeben werden. Was die sich dabei wohl
gedacht haben ? völlig rätselhaft.

; mit den Interrupt Adressen kann ich Dir weiter helfen:
; Beispiel für den RX232 Empfangs Interrupt:

__U1RXInterrupt: ; Uart1 receive interrupt
PUSH SR ; save used registers
PUSH W0

mov U1RXREG,W0 ; get RX Byte
; do something

POP W0
POP SR
bclr IFS0,#U1RXIF ; clear the Interrupt Flag
retfie

.global __U1RXInterrupt ; janz wichtig für den Linker

.end

; Hinweis:
im Linker File(.gld Datei) sind die Namen aller Interrupts
zu finden. Diese sind vorerst alle auf den __DefaultInterrupt
umgeleitet. Du must also lediglich deine eigene Interrupt
Routine definieren und diese als "GLOBAL" erklären.
Dann setzt der Linker die Adresse deiner Routine
automatisch dort ein. Ein "polling" wie bei den
18er Pics usw. gibt es nicht mehr, Gott sei Dank !
Der Einstieg in den ASM30 ist wirklich mühselig und die
Informationen eher spärlich, muss ich leider auch sagen.
Ich hoffe Dir geholfen zu haben
Siro

Pitt1986
10.06.2008, 21:13
Hallo,

mittlerweile hat sich des jetzt alles geklärt.

Mit dem dem #define muss man des jetzt so machen, dass man die endung vom programm-file von nem kleinen .s auf ein grosses .S ändernt, da geht es dann zuerst durch den c-compiler und wird dann an den assembler weitergegeben. der c-compiler kann mit dem #define noch was anfangen.

mfg
pitt