- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Dezimalzahl in ihre Ziffern zerteilen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Ort
    Ernstbrunn
    Alter
    31
    Beiträge
    22

    Dezimalzahl in ihre Ziffern zerteilen

    Anzeige

    Powerstation Test
    Hallo
    Ich muss für die ausgabe einer dezimalzahl an einer 7seg. Anzeige eine Variable mit dem nahmen Zahl die einen wert von 0-255 hat in ihre 3 ziffern zerlegen und in den variablen zein zzwei zdrei speichern nur weiß ich nicht wie ich die zahl zerlegen kann. ich benutzte einen PIC16F690

    mfG
    IchKG

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo IchKG!

    Aus deiner Beschreibung vermute ich, dass deine Variable "Zahl" eine 8-bit hexadezimal (binär) Zahl ist. Die musst du zuerst in eine dezimale Zahl umwandeln und erst danach die 3-stellige Dezimalzahl ausgeben. Über hexadezimal zu dezimal Wandlung sind schon mehrere Beiträge in diesem Forum zu finden.

    MfG

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Wenn es mit dividieren nix is, kannst du:

    zein = wie oft kann ich 100 abziehen

    zzwei = wie oft kann ich (vom Rest) 10 abziehen

    zdrei = Rest
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Ort
    Ernstbrunn
    Alter
    31
    Beiträge
    22
    so versuch ichs mal PicNICK

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Du kannst dir auch das anschauen:

    https://www.roboternetz.de/phpBB2/ze...t=hex+wandlung

    MfG

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Ort
    Ernstbrunn
    Alter
    31
    Beiträge
    22
    Zitat Zitat von PICture
    Du kannst dir auch das anschauen:

    https://www.roboternetz.de/phpBB2/ze...t=hex+wandlung

    MfG
    ich will keine hex umwandlung machen sondern so wie das PICNick geschrieben hat
    einfach nur eine Dezimalzahl in ihre stellen zerteilen

  7. #7
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Sorry, dann vergiss, bitte, meine Aussagen!

    MfG

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    16.03.2007
    Alter
    37
    Beiträge
    58
    Hey,
    also ich mache es mit zwei Unterprogrammen:

    1. Zerlegen in 3 Dezimalzahlen
    Code:
    ; ----------------------------------------------------------------
    ; Variablen im RAM 
    ; ----------------------------------------------------------------
    	cblock	
          bcdE                                ; Einerstellen
          bcdZ                                ; Zehnerstellen
          bcdH                                ; Hunderterstellen
    	endc
    
    ; ----------------------------------------------------------------
    ; Funktion zum Wandeln einer 8 Bit Binaerzahl in 3 Stellen bcd
    ; Uebergabe ist w Register
    ; Ergebnisse in bcdE, bcdZ, bcdH
    ; ----------------------------------------------------------------
    binbcd:     clrf        bcdH              ; bcdH loeschen
                clrf        bcdZ              ; bcdZ loeschen
                movwf       bcdE              ; w nach bcdE
    bcd1:       movlw       0x0a              ; lade w mit 10
                subwf       bcdE,w            ; bcdE - 10 in w
                btfss       STATUS,C          ; bcdE < 10 ?
                goto        bcd2              ; ja -> bcd2
                movwf       bcdE              ; nein -> bcdE - 10
                incf        bcdZ,f            ; bcdZ + 1
                movlw       0x0a              ; lade w mit 10
                subwf       bcdZ,w            ; bcdZ - 10 in w
                btfss       STATUS,C          ; bcdZ = 10 ?
                goto        bcd1              ; nein -> bcd1
                clrf        bcdZ              ; ja -> bcdZ = 0
                incf        bcdH,f            ; bcdH + 1
                goto        bcd1              ; gehe zu bcd1
    
    bcd2:       return
    2. Umwandeln in 7-Segment Code
    Code:
    ;************************************************************************************************************************************
    ; Tabelle der Siebensegmentcodes von 0 bis 9 an RB1...RB7
    ;************************************************************************************************************************************
    tab		addwf	PCL,1		; Addiert W und PCL. Ergebnis steht in PCL,was Sprung zum entsprechenden Ausgabewert ergibt
    		retlw	0x7E		; 0
    		retlw	0xC			; 1
    		retlw	0xB6		; 2
    		retlw	0x9E		; 3
    		retlw	0xCC		; 4
    		retlw	0xDA		; 5
    		retlw	0xFA		; 6
    		retlw	0xE			; 7
    		retlw	0xFE		; 8
    		retlw	0xDE		; 9

    Hoffe es hilft dir.

    Gruß Carsten

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    13.01.2008
    Ort
    Ernstbrunn
    Alter
    31
    Beiträge
    22
    danke carsten genau sowas hab ich gesucht
    mfG

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    16.03.2007
    Alter
    37
    Beiträge
    58
    Dacht ich mir, deswegen habe ich es gepostet. Ich habe es damals wo ich es gesucht habe über google gefunden bzw. selbst erstellt. Also den ersten Code findest du in Google unter der bezeichnung binbcd Wandlung und den zweiten habe ich selbst erstellt.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress