www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom AVR Digitale ausgabe nicht vom ersten Portpin an


Autor: Zi Ppo (zippo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich versuche gerade eine Sieben-Segment-Anzeige zu programmieren und da 
krieg ich probleme. Denn die Ausgänge zu einem BCD zu 7-Segm. Baustein 
fangen nicht beim PortD.0 sondern bei PortD.4 an! Ich versuche es jetzt 
schon über 2h den AVR davon zu überzeugen die Ausgabe erst ab D.4 zu 
beginnen...der ist allerdings nicht einverstanden.
Ich habe schon einige Sachen getestet jedoch funktioniert da nichts von. 
Hat einer von euch eine Idee wie man das lösen kann?

Gruss
Zippo

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da Code und Schaltung anscheinend geheim sind muss ich mal raten

in C wäre was in dieser Richtung ein Anfang...(BCD<<PD4)

Autor: Zi Ppo (zippo)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Na so was!!!
Der Code ist nicht geheim! Ich hatte ihn auch angehängt nur erscheint er 
nicht! Also kopier ich ihn mal ein

$regfile = "m8def.dat "
$crystal = 1000000
$baud = 2400
Ddrb = &B00111000
Portb = &B00111000
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output
Dim A As Long
Dim A1 As Long
Dim Ganzevolt1 As Long
Dim Ganzevolt As Long
Dim Kommavolt As Long
Dim X As Byte
Dim Y As Long
Dim Y1 As Long
'Dim Adcwert As Word
Config Adc = Single , Prescaler = Auto , Reference = Avcc

Const Adcwert = 1000

Do
'Adcwert = Getadc(0)
A1 = Adcwert * 200
A = A1 / 1023
Ganzevolt = A / 10
Ganzevolt1 = Ganzevolt * 10
Kommavolt = A - Ganzevolt1
Select Case Ganzevolt
Case Is < 10 : X = 0
Case Is >= 10 : X = 1
Case Is >= 20 : X = 2
End Select
Y1 = X * 10
Y = Ganzevolt - Y1

Print X ; Y ; "," ; Kommavolt

'X = Makebcd(x)
Portd = X
Portb.3 = 0
Waitms 10
Portb.3 = 1
'Y = Makebcd(y)
Portd = Y
Portb.4 = 0
Waitms 10
Portb.4 = 1
'Kommavolt = Makebcd(kommavolt)
Portd = Kommavolt
Portb.5 = 0
Waitms 10
Portb.5 = 1


Loop

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie ich schon geschrieben hab: die BCD-Zahl einfach mal 4 Stellen nach 
links shiften...

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wie ich schon geschrieben hab: die BCD-Zahl einfach mal 4 Stellen nach
> links shiften...

Das ist da erstmal richtig.

Trotzdem frage ich mich immer wieder, warum man ein Problem so 
umständlich löst. An BASCOM kann es doch nicht liegen, denn auch mit 
BASCOM kann man halbwegs effizient programmieren. Hier ein Beispiel 
(mein erstes und vermutlich einziges BASCOM-Programm):
http://www.hanneslux.de/avr/divers/pm24/VM_tn24_1.bas
Es ist Teil dieser Spilerei mit dem Tiny24:
http://www.hanneslux.de/avr/divers/pm24/index.html

...

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux wrote:
>> wie ich schon geschrieben hab: die BCD-Zahl einfach mal 4 Stellen nach
>> links shiften...
>
> Das ist da erstmal richtig.
>
> Trotzdem frage ich mich immer wieder, warum man ein Problem so
> umständlich löst. An BASCOM kann es doch nicht liegen, denn auch mit
> BASCOM kann man halbwegs effizient programmieren.

beziehst du dich auf das ganze gepostete Programm oder auf das 
Shiften..weil was kürzeres wüsste ich in diesem Fall atm nicht...

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> beziehst du dich auf das ganze gepostete Programm oder auf das
> Shiften..weil was kürzeres wüsste ich in diesem Fall atm nicht...

Ich beziehe mich auf das ganze Programm.
Das Shiften ist in Ordnung, wenn man das Programm als gegeben 
voraussetzt.

Allerdings ist für diesen Zweck der SWAP-Befehl (ASM) bedeutend 
effektiver. Ich weiß allerdings nicht, wie ich BASCOM dazu überreden 
sollte SWAP zu verwenden, besonders, da BASCOM zwingend alle Variablen 
im SRAM hält, SWAP aber auf Register wirkt. So tief bin ich in BASCOM 
nicht eingestiegen, ich habe es auch nicht vor, tiefer einzusteigen.

Ich programmiere meine AVRs in ASM. Dieses BASCOM-Programm ist nur 
entstanden, weil ein guter Freund auch etwas umständlich (vom 
Algorithmus her) programmiert hatte und ich ihm zeigen wollte, dass das 
Programm mit anderen Algorithmen nur die Hälfte des Tiny24 belegt, 
während Seines nicht mehr in den Tiny24 hineinpasste und einen Tiny44 
brauchte. Die ASM-Version belegt aber weniger als 25% des Tiny24-Flash 
(genauen Wert vergessen) bei höherem Funktionsumfang.

...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.