???
wie - was meinst du damit: stell dich nicht so an?
Also mein Prog. steht doch schon oben drinn! NUR das die Funktion nicht die gewünschte ist... siehe ersten Beitrag. (oder hab ich etwas falsch verstanden?)
Tobias
Stell dich nicht so an...
Code:Led_port Alias Portb ' Port An Den Die Segmente "hängen" Dim Wer As String * 1 ' String einzelnes Zeichen der Zahl ' Port-Pin zu 7-segement - g f e d c b a Select Case Wert Case "0" : Led_port = &B00111111 ' hier die Port-Pins ansteuern, Case "1" : Led_port = &B00000110 ' welche das Segment ansteuern soll Case "2" : Led_port = &B01011011 Case "3" : Led_port = &B01001111 Case "4" : Led_port = &B01100110 Case "5" : Led_port = &B01101100 Case "6" : Led_port = &B01111101 Case "7" : Led_port = &B00000000 Case "8" : Led_port = &B00000111 Case "9" : Led_port = &B01101111 Case Else Led_port = &B00000000 End Select
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
???
wie - was meinst du damit: stell dich nicht so an?
Also mein Prog. steht doch schon oben drinn! NUR das die Funktion nicht die gewünschte ist... siehe ersten Beitrag. (oder hab ich etwas falsch verstanden?)
Tobias
...
Ich habe das mal zu Fuss erledigt. Ist eigentlich nicht schwer. Zuerst wählen, welche der 4 Ziffern leuchten soll. Diese aktivieren, dann den Wert anzeigen. Ziffer deaktivieren, nächste aktivieren, Wert anzeigen, deaktivieren,...
PRinzipiell machst du es auch so. Du solltest mal den Stack erhöhen, da ich keine Angabe darüber finden kannt.
Wenn das Herz involviert ist, steht die Logik außen vor! \/
>>Du solltest mal den Stack erhöhen
? ääh damit hab ich noch nichts gemacht...
deswegen taucht in meinem Programm auch nichts davon auf. was/wieviel soll ich denn nehmen?
Tobias
...
Hallo TobiasBlome,
dann hilft es sicher, das bisherige korrigierte Programm nochmal zur Ansicht hier einzustellen.hab´ ich sofort geändert. Aber es macht keinen Unterschied ob 1 oder 0 und das merkwürdige 2 oder 3 geht auch! Bei 4 fehlt die erste Zahl...
Aber vielleicht habe ich ja mehrere kleine Fehler!
Gruß, Michael
ich glaub wir reden gerade total aneinander vorbei,
- do
___aber warum fragst du denn wie es deodiert werden soll,
___wenn du das schon anders gelöst hast,
___was aber nicht funktioniert,
___und darum hier danach fragst wie du es lösen kannst.
loop
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
ja richtig - hier mein aktuelles Programm!
und der FEHLER:
wenn Variable LED=1234 --> dann Anzeige 43
wenn Variable LED=123 -> dann Anzeige 3321
(In Zukunft soll noch ein Dezimalpunkt hinzukommen)
Code:'7Segmentanzeige mit 4 Anzeigen $regfile = "ATtiny2313.dat" 'ATTiny2313 $crystal = 20000000 '20MHz Quarz $hwstack = 64 ' default use 32 for the hardware stack $swstack = 64 ' default use 10 for the SW stack Ddrb = &B11111111 'PortB = Ausgang (PB0=A usw.) Ddrd = &B1111111 'PortD = Ausgang (PD3=Anzeige1, PD4=A2, PD5=A3, PD6=A4) Dim Led2 As String * 5 At &H70 Dim Z(5) As Byte At &H70 Overlay Dim Led As Word Dim X(5) As Byte Dim Test As Integer Dim Test2 As Integer Dim Anzeige_x As Byte 'für LED-Anzeige wählen... Enable Interrupts Do 'LED:=:EZHT Led = 123 'LED - Anzeigewert For Test2 = 1 To 5 'Wert sichern ..... X(test2) = Z(test2) Next Test2 'Anzeige durchwechseln (hochzählen) For Anzeige_x = 3 To 6 'Zaehler = PortD 3-6 Anzeige wählen) Test = X(anzeige_x) Select Case Test 'Led-Segmente als Zahlen definieren: Case 48 : Portb = 63 'NULL Case 49 : Portb = 6 'EINS Case 50 : Portb = 91 'ZWEI Case 51 : Portb = 79 'DREI Case 52 : Portb = 102 'VIER Case 53 : Portb = 109 'FÜNF Case 54 : Portb = 125 'SECHS Case 55 : Portb = 7 'SIEBEN Case 56 : Portb = 127 'ACHT Case 57 : Portb = 111 'NEUN Case 58 : Portb = 128 'DP -> geht das als PORT zu setzen??? Case Else : Portb = 0 End Select 'Anzeige auswählen und Ein- / Ausschalten Portd.anzeige_x = 1 'Anzeige AN Waitus 100 'Zeit für jede Anzeige 'Waitms 100 'waitus 100 'Zeit für jede Anzeige Portd.anzeige_x = 0 'Anzeige AUS Next Anzeige_x Led2 = Str(led) If Z(4) = 0 Then 'Führende Nullen eliminieren Do Z(5) = Z(4) Z(4) = Z(3) Z(3) = Z(2) Z(2) = Z(1) Z(1) = 0 Loop Until Z(5) > 0 End If Loop
Tobias
...
oh entschuldigung, ich habe noch einen Wichtigen Fehler vergessen:
Auf der Anzeige mit der der 1 (LED=123 -> dann Anzeige 3321) taucht manchmal eine 3 auf...
...
Hat denn keiner eine Idee?
Och nee - jetzt stehe ich wieder wie am Anfang vom Betrag...
Tobias
...
Ich weiss nicht, wie du das verdrahtet hast. Ich würde erstmal nur eine Ziffer aktivieren und alle Zahlen einzeln durchlaufen lassen. Dann die Nächste usw.
Meine Ziffern sehen so aus:
Dim Zahl(10) As Byte
Zahl(10) = &B01000000
Zahl(1) = &B01111001
Zahl(2) = &B00100100
Zahl(3) = &B00110000
Zahl(4) = &B00011001
Zahl(5) = &B00010010
Zahl(6) = &B00000010
Zahl(7) = &B01111000
Zahl(8) = &B00000000
Zahl(9) = &B00010000
Die 10 ist natürlich die Ziffer 0.
Dann halt
Portb = Zahl(1)
usw
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Lesezeichen