- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Variablenproblem mit Printbin

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282

    Variablenproblem mit Printbin

    Anzeige

    Powerstation Test
    Ich habe im Eeprom mehrere AT Befehle und Rufnummern für ein Modem programmiert.
    Für die Ausgabe habe ich ein Array mit 25 Byte dimensioniert, in welches die entsprechenden Daten aus dem EEprom eingelesen werden.
    Da die Ausgabe mit Printbin jedesmal unterschiedlich lang ist, habe ich für die Länge ebenfalls eine Variable dimensioniert.

    L=5
    Printbin Daten(1);L

    Dabei werden aber immer alle 25 Byte vom Array ausgegeben !?!?!?
    Wie kann ich ( ohne eine Schleife ) die Ausgabe, mit der Variablen auf die entsprechende Länge begrenzen ???

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.03.2005
    Ort
    OWL
    Beiträge
    216
    Hallo,
    wenn ich mich recht errinnere, dürfen für die Anzahl der auszugebenden Elemente nur Konstanten eingesetzt werden. Wenn L immer 5 ist, würde ich die 5 besser in den PrintBin-Befehl schreiben.

    Ruppi

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Wenn du die daten als strings speicherst, haben sie am ende eh' eine NULL, da würdest du keine Länge extra brauchen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    @Ruppi

    The number of bytes to send can be specified by an additional numeric parameter.
    das es nur Konstanten sein dürfen, lese ich da nicht heraus.

    @Robert

    daran habe ich auch schon gedacht, aber es sind ja auch Steuerbefehle dabei.
    Ich werde mir mal in Assembler ansehen, was Bascom mit der Variablen beim Printbin macht.

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    .. aber es sind ja auch Steuerbefehle dabei..
    NULL kann's ja nicht sein, alles andere wäre ja wurst
    Printbin byte = Print chr(byte)
    d.h. das Zeichen geht 1:1 raus


    Länge: Bascom ist eine Schweinebacke: Länge als variable geht nicht, das muß eine numerischer Wert sein

    In dem Beispiel printet er zuerst B(14) ! und dann die variable "A" !!
    Code:
    Dim A As Byte
    Dim B(14) As Byte
        A = 4
        Printbin B(1) ; A
    '----------------------------------------------------------
    
        A = 4
    	LDI	r24,0x04
    	STS	0x0060,r24
    
        Printbin B(1) ; A
    	LDI	r19,0x0E         ; len array (14)
    	LDI	XL,0x61          ; B(1)
    	LDI	XH,0x00           
    	CALL	L_0x00A4       ; printbin
    
     	LDI	r19,0x01         ; len 1
    	LDI	XL,0x60          ; A
    	LDI	XH,0x00
    	CALL	L_0x00A4         ; printbin
    
    
    	CLI
    L_0x00A2:
    	RJMP	L_0x00A2
    
    
    L_0x00A4:
    	LD	r24,X+
    	RCALL	L_0x00AE
    	DEC	r19
    	BRNE	L_0x00A4
    	RET
    L_0x00AE:
    	SBIS	UCSRA,UDRE
    	RJMP	L_0x00AE
    	OUT	UDR,r24
    	RET
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.03.2004
    Beiträge
    185
    @PicNick
    Mit welchen Disassembler hast Du den Code erzeugt? AVR-Studio 4 erzeugt aus meinem OBJ-Code keine Labels (die das Lesen deutlich vereinfachen).
    Code:
    BREQ    PC+0x03          Branch if equal
    JMP     0x000001C1       Jump
    da hilft auch in AVR Studio kein Display/ShowLabels

  7. #7
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    @Robert

    In dem Beispiel printet er zuerst B(14) ! und dann die variable "A" !!
    genau das habe ich auch gerade herausgefunden.
    Damit ist der Printbin Befehl für mich unbrauchbar. Wenn wenigstens ein Error beim kompilieren aufgetreten wäre ...
    Da die Ausgaberoutine so schön einfach ist, werde ich mir eine eigene in Assembler schreiben. Dann kann ich meinen EEprominhalt auch so lassen.

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    ..Mit welchen Disassembler..
    Hehe, genau wegen diesen Labeln hab ich mir den Hex-Hacker selber zusammen gefriemelt.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.03.2004
    Beiträge
    185
    der klingt nach
    ... ich hab da etwas für Dich ...

  10. #10
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282
    Hehe, genau wegen diesen Labeln hab ich mir den Hex-Hacker selber zusammen gefriemelt.
    Das gibt (oder gab ?) es auch fertig.
    So etwas war mal bei einem früheren AVRStudio mit bei.
    Google mal nach "DisAVR" eventuell findet man den Disassembler noch.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad