- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: shiftout programmieren-wie bcd-code erzeugen?->gelöst

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    58
    Beiträge
    117

    shiftout programmieren-wie bcd-code erzeugen?->gelöst

    Anzeige

    LiFePo4 Akku selber bauen - Video
    hallo,möchte mit dem befehl shiftout mein schieberegister laden,es soll
    ein bcd code ausgegeben werden der die uhrzeit enthält.die zeit sollte ohne rtc ,also nur per software gemacht werden.okay,das problem ist jetzt die softuhr kann ich ja mit ein paar schleifen proggen,aber wie bekomme ich die zahlen die ich habe, in bcd-code gewandelt um diese dann in mein schieberegister zu laden.
    die anzeige besteht (schon vorhanden) aus 3x mc14015 und 6x mc14511.
    also die uhr läuft schon mit einem lcd, nun soll sie auf die 7segmentanzeige.

    edit: ich brauche immer nur 4 bits und keine 8 wie mir der
    befehl bin( ) liefert.

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    58
    Beiträge
    117
    hatt keine eine idee wie ichdas realiesieren kann,sprich die zaheln der uhr
    sollen in bcd-code ausgegeben werden,wie die 1 z.b. mit 0001 oder die
    9 mit 1001.
    beispiel wie spät ist es hier
    0010 0011 0101 0111 0011 0110

    wenn das so ausgeshiftet würde ware ich am ziel.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.01.2006
    Ort
    Mönchengladbach
    Beiträge
    544
    Action

    Convert a variable into its BCD value.







    Syntax

    var1 = MAKEBCD(var2)







    Remarks

    var1
    Variable that will be assigned with the converted value.

    Var2
    Variable that holds the decimal value.





    When you want to use an I2C clock device, which stores its values as BCD values you can use this function to convert variables from decimal to BCD.

    For printing the bcd value of a variable, you can use the BCD() function which converts a BCD number into a BCD string.







    See also

    MAKEDEC , BCD , MAKEINT







    Example

    Dim A As Byte

    A = 65

    Lcd A

    Lowerline

    Lcd Bcd(a)

    A = Makebcd(a)

    Lcd " " ; A

    End

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    58
    Beiträge
    117
    hallo sigint:
    habe ich in der hilfe auch gefunden,kann damit nichts anfangen.

    jetzt habe ich mal eine prog geschrieben,das soll mir den binärcode
    in den shiftout schreiben.im sim erhalte ich die zahlen für die sekunden
    und den bin für die sekunden,nur schreibt er mir nichts in den shiftout
    Angehängte Dateien Angehängte Dateien

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    58
    Beiträge
    117

    shiftout die zweite

    so habe ein paar fehler im vorherigen programm gefunden,jetzt läuft es zwar,aber der bcd-code der geschickt wird ist seitenverkehrt.
    sprich bei einer eins die gesendet wird ,wird "1000" geschickt und das wäre für meinen mc14015 eine acht,genau anders herum wäre richtig "0001".
    wie kann ich den bcd-code reversieren
    Angehängte Dateien Angehängte Dateien

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    beachte mal... was unter option steht !



    SHIFTOUT pin , pclock , var , option [, bits , delay ]





    Remarks

    Pin
    The port pin which serves as a data output.

    Pclock
    The port pin which generates the clock.

    Var
    The variable that is shifted out.

    Option
    Option can be :



    0 – MSB shifted out first when clock goes low

    1 – MSB shifted out first when clock goes high

    2 – LSB shifted out first when clock goes low

    3 – LSB shifted out first when clock goes high

    Bits
    Optional number of bits to shift out.

    Delay
    Optional delay in uS. When you specify the delay, the number of bits must also be specified. When the default must be used you can also use NULL for the number of bits.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    58
    Beiträge
    117
    hallo kollision
    ja die option habe ich jetzt schon erkannt,habe jetzt eine "null",verwendet.
    also shiftet er jetzt seitenverkehrt,"00001000" .so gesehen von rechts nach links,schon mal gut.nur benötige ich die letzten vier bits."1000",
    wie kann ich die ersten vier bits abschneiden.da ich jede zahl der uhr bearbeite,sind jetzt 6 shiftfout befehle im programm.der mc14015 ist ein doppelter 4 bit schieberegister,also für 2 zahlen zuständig.bei einer zahl geht die sache ja noch,habe mal eine -4 in den befehl geschrieben.
    Angehängte Dateien Angehängte Dateien

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    da schreibe ich dir das gleiche wie gestern! kannst du nicht lesen oder hast du die language referece von Bascom (in der hilfe) noch nie angeklickt ?

    jetzt achtest du halt mal auf die option "BITS"


    gruss





    SHIFTOUT pin , pclock , var , option [, bits , delay ]





    Remarks

    Pin
    The port pin which serves as a data output.

    Pclock
    The port pin which generates the clock.

    Var
    The variable that is shifted out.

    Option
    Option can be :



    0 – MSB shifted out first when clock goes low

    1 – MSB shifted out first when clock goes high

    2 – LSB shifted out first when clock goes low

    3 – LSB shifted out first when clock goes high

    Bits
    Optional number of bits to shift out.

    Delay
    Optional delay in uS. When you specify the delay, the number of bits must also be specified. When the default must be used you can also use NULL for the number of bits.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    58
    Beiträge
    117
    habe ich gemacht, eine 3 schreibt mir die bits von links nach rechts.
    eine null von rechts nach links. problem ist die bits sind seiten verkehrt.
    von links nach rechts schreiben kommt die folge eine 1 eine 0 eine 0 eine 0 ,ergibt im mc 14015 eine 8 ,brauche aber eine 0 0 0 1 für die eins.
    die hilfe habe ich benutz und dies da auch gefunden.okay prog erst seit dez 06 mit bascom,muss also noch lernen wie was funzt.
    danke für dein hilfe.
    wie kann ich den bcd code mit swap drehen .
    zum veranschauung soll aus 12345678 eine 87654321 werden
    [/code]
    Angehängte Dateien Angehängte Dateien

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    alo ich greife das aus deinem vorletzten post nochmal auf:

    ja die option habe ich jetzt schon erkannt,habe jetzt eine "null",verwendet.

    also shiftet er jetzt seitenverkehrt,"00001000" .so gesehen von rechts nach links,schon mal gut.nur benötige ich die letzten vier bits."1000",

    das scheint ja schonmal ganz okay zu sein. du willst also die führenden 4 nullen loswerden, die von links (also msb) beginnen. ich denke das dir der befehl " Shift variable , left, 4 " helfen kann. dadurch schiebst du die bits in der variablen erstmal 4 stellen nach links. die oberen vier 0 fallen dann ins nichts. anschliessend mit dem shiftout befehl mit null und auf 4 bits begrenzen. dann sollte es stimmen.

    ggf musst du die variable vorher mal zwischenspeichern, falls du die oberen 4 bits noch brauchst.

    gruss

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad