Programmieren mit Bascom

dg2ygq

Neues Mitglied
23. Juli 2007
239
0
0
Bielefeld
Sprachen
Für die ersten Gehversuche mit dem ATMega8515 habe ich mir die Demo von BascomAVR geladen.

Folgendes Problem soll gelöst werden:
Zwei 7Segmentanzeigen, eine an PortA, die andere an PortB, sollen Ziffern von 1 bis 99 darstellen. Gleichzeitig soll an PortC ein Bitmuster ausgegeben werden.
Über PortD Pin0 und PortD Pin1 soll jeweils "rauf" bzw "runter" getastet werden. (Ein Drehimpulsregler wäre nicht schlecht, aber ich denke das ist in Basic zu aufwändig, verschiebe ich erstmal bis ich mich mit Assembler auseinander gesetzt habe.)

Die Anzeige muss ja nun nicht bis 99 durch gehen, es reicht ja wenn ich irgendwie in eine Data-Zeile(?) die Bitmuster für Ziffern 0-9 ablege (auf die selbe weise die Bitmuster für den PortC), von wo ich aus dem Programm heraus drauf zu greifen kann.

Wie kann ich das am geschicktesten realisieren? Habt ihr Lösungen oder vielleicht sogar Beispiele?
 
Hi
Wenn du ein Beispiel in ASM umsetzen kannst hilft vielleicht dies:
Speicherdeklaration
Code:
DSEG
.....
Ziffern: .Byte 10
.....
.....
Die Initialisierug vor der Programmschleife

Code:
InitZiffer: 
              LD  XH, Ziffern(HighByte)  ; Adresse der Variablen Ziffer
              LD  XL, Ziffern(LowByte)
              LDI Muster_Reg, 0b01110111 ; Register mit Bitmuster für 0
              ST+ X, Muster_Reg
              LDI Muster_Reg, 0b00000011 ; Register mit Bitmuster für 1
              ST+ X, Muster_Reg
              LDI Muster_Reg, 0b01110101 ; Register mit Bitmuster für 2
              ST+ X, Muster_Reg
              etc.  ; muß der Hardware angepasst werden
              .....
              RET
und die Zuordnung einer Ziffer mit einem Wert aus einer Variablen Zahl:
Code:
Select_Zahl:
             LDS Index_Reg, Zahl          ; Register für Adress-Offset mit Zahlwert
             CLR Zero                          ; Register für Adressoffset High
             LD  XH, Ziffern(HighByte)    ; Adresse der Variablen Ziffer
             LD  XL, Ziffern(LowByte)
             ADD XL, Index_Reg
             ADC XH, Zero
             LD  Muster_Reg
            RET
Das Ergebnis steht in dem Register Muster_Reg und kann einem beliebigen Port zugewiesen werden.
Code:
OUT Portx, Muster_Reg

Ich hoffe, es hilft dir.
Gruß oldmax
 
ein kleiner Nachtrag:

Hilfreich sind auch Kommentare:
Code:
Ziffer:   .Byte 10        ; Bit 7 nicht belegt
                              ; Bit 6           -
                              ; Bit 5 und 3 !  !
                              ; Bit 4           -
                              ; Bit 2 und 1 !  !
                              ; bit 0           -
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)