Forum: Mikrocontroller und Digitale Elektronik PIC 16F690 , ich komm da jetzt nicht weiter


von Jörn B. (der_joern)


Angehängte Dateien:

Lesenswert?

Hallo
Kann sein dass ich mich mit der Programmierung meines PIC verhaspelt 
habe.
Ich möchte an Ports anstehende BCD Daten mit einer dezimalen Auswahl 
vergleichen, und mit dem Ergebniss Unterprogramme starten, die
für eine LED Matrix 15X5 die Kathodenstrecke schaltet.(Ansteuerung eines 
ULN 2803).
Für meinen Testaufbau benutze ich PORTB zum einlesen.Es soll die Zahl 
2948 angezeigt werden, aber es kommt 0040.
Wenn ich PORTB überhaupt nicht initialisiere, wird mir die gewünschte 
Zahl angezeigt ?
Im code ist kurz erklärt, was das Programm machen soll.
Was kann da nicht funktionieren ?
Eventuell kann sich ja mal jemand meines Problems annehmen
btw.: PORTB ist nicht beschaltet
Grüße
Jörn

von Carsten M. (ccp1con)


Lesenswert?

Tut mir leid, ich kann nicht erkennen, was du mit dem Programm 
bezweckst. Außerdem kann ich auch keine richtige Logik erkennen.

z.B. unter „Uhrzeit1“ fängst du mit „call Zahl2“ an dann erst „call 
Zahl1 … Zahl3, Zahl4 .. usw.
Die binärwerte machen für mich auch keinen Sinn.
z.B. vor „Call Zahl5“ hast du b01010000 was Sinn macht aber vor „Call 
Zahl3“ movest du 0b11110000!?

Vielleicht habe ich ja des Grundprinzip nicht erkannt :-(

von Jörn B. (der_joern)


Lesenswert?

Ich hatte ja geschrieben, das die Zahl 2984 gezeigt werden soll, deshalb 
call
2, 9 8,und 4, deshalb dort auch der binärwert von b 00000000.
Der Port wird nicht beschaltet, muss also als Eingangswert eine 0 haben
Damit sollte der Wert von 2984 angezeigt werden.
Die Reihenfolge ist nur ein Ergebnis meines Testversuchs.Natürlich muss 
später bei Call Zahl0 der Binärwert von b´00000000` am Port verglichen 
werden.
Bei call Zahl9 natürlich d´9´am port B :-)
Da wirds dann wieder Logisch , aber erstmal muss es ja funktionieren, 
und das tut es nicht .
Grüße
Jörn

von John (Gast)


Lesenswert?

Jörn Bastelbob schrieb:
> Der Port wird nicht beschaltet, muss also als Eingangswert eine 0 haben

Wenn Du die Eingänge auf Masse legst (ev. über Widerstände), dann ist 
der Eingang auf "0". Offene Eingänge haben oft irgend einen zufälligen 
Wert.

von Jörn B. (der_joern)


Lesenswert?

Hallo John
Werde ich mal machen
Sonst nix , was ins Auge fällt ?? :-)
Grüße
Jörn

von Jörn B. (der_joern)


Lesenswert?

Hallo John
Das war wohl mein Anfängerpech :-((
Jetzt habe ich die Eingänge mit 10K gegen Masse gelegt, und das ganze 
Programm läuft so wie es soll. Eine Änderung am Port verändert sofort 
die Anzeige :-))
Da hätte ich eigentlich selbst drauf kommen müssen......
Danke
Jörn

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.