-         

Ergebnis 1 bis 3 von 3

Thema: #define und adressen setzten in asm30 - dspic

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170

    #define und adressen setzten in asm30 - dspic

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2007
    Ort
    Berlin
    Beiträge
    525
    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

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.07.2005
    Beiträge
    170
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •