-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: MPLAB DB Anweisung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2006
    Beiträge
    8

    MPLAB DB Anweisung

    Anzeige

    Hallo an alle,
    ich möchte mit der DB Assembler - Anweisung im Speicher des Pic´s ein Bitmuster ablegen. Es klappt einfach nicht. es befinden sich im speicher Daten die mit meinen keine Änlichkeit haben. Wer hat das schon mal probiert?
    mfg
    Wolf

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Hallo,
    z.B. so:

    Code:
    TxtWerte	de	cr, lf
    		de	"; WERTE --------",	cr, lf
    		de	"; Helligkeit ", 0	, " [%]", cr, lf
    		de	"; Ist / Soll ", 0	, cr, lf
    		de	"; Programm ", 0	, cr, lf, 0
    
    		de	18		; Dezimal
    		de	0x18		; Hexadezimal
    		de	00011000b	; Binär
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2006
    Beiträge
    8

    MPLAB DB Anweisung

    Hallo Karl Heinz
    hast du das mal ausprobiert?
    Die Syntax ist schon klar.
    aber was ist im Speicher z.B. de 00011000b ; Binär ?
    Du meintest bestimmt immer DB?
    wfg
    wolf

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo wolf***!

    Du meinst bestimmt ein Flaschspeicher, oder?

    MfG

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Hallo Wolf,
    ich mache in all meinen Programmen nichts anderes, wie das, was ich oben geschrieben habe. Wie das wirklich im Flash-Speicher abgelegt wird, interessiert mich nicht wirklich, da es richtig ausgelesen wird. Die dazugehörigen Flash-Lese-Routinen findest Du hier und hier .
    Ich schreibe auch 'de' für define eeprom-data-byte, nicht 'db' für define byte. Bei 'de' steht: "... evaluete to an 8-bit value. The upper bits of the program word are zeros".
    Das steht bei 'db' nicht; was 'db' also wirklich macht, kann ich Dir nicht sagen, Flash-Memory hat nämlich 12...14 Bits !
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  6. #6
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo wolf***!

    Anstatt langer Erklärung ein Teil meines funktionierendes Programms. Das Programm ist auf dem PIC18F252 gelaufen. Da die PIC18FXXX Familie eine andere Organisation des Programmspeichers hat konnte ich sogar mit der Anweisung "dw" 16-bit Werte ablegen. Ich habe es mit den "kleinen" PIC`s (12F und 16F) nicht probiert, müsste aber genauso, bloss mit "db" und 8-bit Werten gehen.

    MfG
    Code:
    		ORG	0x7C00
    RAMSave 	                dw	0x0100
    		dw	0x0302
    		dw	0x0504
                                    u.s.w.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    @PICture
    Bei 16 Bit Datenbreite im Programm-Speicher wirst es sicher keine Probleme geben. Was passiert aber bei 1 mal DW bzw. 2 mal DB nacheinander, wenn der Flash-Speicher nur 12...14 Bit Datenbreite hat ? Für die ersten 8 Bit (= 1. Byte) Null Problemo, bleiben für das zweite DB noch 4...6 Bits ?; was passiert dann wirklich ?
    Mit DE ist das laut MPASM User's Guide klar geregelt und funktioniert bei mir auch anstandslos bei PIC16F877 und PIC12F629:
    Reserve Memory words with 8-bit data. Each <expr> must evaluate to an 8-bit value. The upper bits of the program word are zeroes. Each charachter in a string is stored in a separate word.
    Wenn Word's verarbeitet werden sollen, kann
    DE LOW(word)
    DE HIGH(word)
    verwendet werden.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  8. #8
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo kalledom!

    Danke für Deine ausführliche Erklärung. Wenn ich einen Bedarf haben werde, werde ich das nutzen. Ich habe bisher bei den "kleinen" nur "retlw" fürs Ablegen von 8-bit Werten im Flasch benutzt.

    Schönste Grüsse

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.10.2004
    Ort
    ferd. Waldmüllerg. 7/2
    Alter
    32
    Beiträge
    456
    um lookup tabels zu erzeugen benutz einfach den Befehl "dt" das erzeugt dir einen Data-Table mit retlw befehlen. Ist aber wirklich nur zur Übersichtlichkeit gut, bzw. wenn man sehr viele Rückgabe-Werte hat (z.b.: Lookup-Table für einen Sinus) und es mit ein Haufen von retlw-Befehlen einfach zu groß werden würde. Wird genauso wie db, etc verwendet, also halt

    jump:
    codes zur Vektorerrechnung

    table:
    dt 1,2,3,4,5,6,...

    MfG
    Mobius

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Hallo Mobius,
    richtig, dafür sind die 12...14 Bits Flash-Speicher-Datenbreite ausreichend, um die 8 Bits vom Datenbyte und die Bit-Konstellation für den RETLW-Befehl unter zu bringen.
    Für einen Text-String oder andere Datenfolge ist diese Methode allerdings nicht besonders glücklich. Außerdem müssen einige Vorkehrungen getroffen werden, falls diese 'Ansammlung' auf einer 256-Byte-Grenze liegt.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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