Forum: Mikrocontroller und Digitale Elektronik 4094 mit 16F628 ansteuern


von Marcel K. (sunny198828)


Angehängte Dateien:

Lesenswert?

Hallo,
ich versuche einen 4094 mit einem PIC 16F628 anzusteuern!
beschaltung habe ich mit in das asm-file geschrieben!
Ich bin noch anfänger und würde gern mal wissen wo mein fehler liegt...
wäre supernett wenn mir jemand helfen könnte!,
und mir eventuell sagt wo mein fehler in der programiereung liegt!
am 4094 leuchten die led's undefinierbar

mfg sunny

von Wilhelm F. (Gast)


Lesenswert?

Mir ist im Code ne Kleinigkeit aufgefallen, das könnte es schon sein. 
Wie schnell ist denn der PIC? CLK wird gesetzt, und mit dem nächsten 
Befehl schon wieder gelöscht. Das könnte zu schnell sein, da müßte unter 
Umständen ein nop-Befehl zur Verzögerung dazwischen. Man muß mal ins 
Datenblatt des 4094 schauen, wie die Schaltzeiten definiert sind, ich 
habs gerade nicht zur Verfügung.

von Marcel K. (sunny198828)


Lesenswert?

aber sonst müsste es klappen?
der prozessor läuft momentan auf 4mhz intern.
Im Datenblatt habe ich nicht viel über die zeiten gefunden.
ich habe jetzt nochmal den code verändert angehängt.
meintest du es in etwa so?

von Marcel K. (sunny198828)


Angehängte Dateien:

Lesenswert?

hier der code
ganz vergssen^^

Edit:
ich habs ebend mal durch den simulator laufen lassen und gesehen das auf 
Data garkeine implse kommen....
woran könnte das denn jetzt liegen?

von Wilhelm F. (Gast)


Lesenswert?

Marcel Klug schrieb:

>ich habs ebend mal durch den simulator laufen lassen und
>gesehen das auf Data garkeine implse kommen....

Und was machen die anderen Signale?

von Wilhelm F. (Gast)


Lesenswert?

Ah ja, OK. Wenn die Variable cdsend leer ist, wird D nie aktiv.

von Claus P. (claus_p)


Lesenswert?

1. cdsend scheint nicht initialisiert zu sein
2. wo kommt denn Ini_opt her?
3. auch RB1 ist als Output definiert (im Widerspruch zum Kommentar ...)

Grüße
Claus

von Marcel K. (sunny198828)


Lesenswert?

die anderen signale laufen
Den kommentar habe ich schon bei mir geändert!
keine ahnug wie ich daruf kam....
okay und wie bekomme ich es jetzt hin das ich mit zb
 movlw B'00000001' den ersten ausgang des 4094 auf high schalte?

ich stehe da n bissl aufm schlauch.
aber schonmal danke für die reichlich vielen antworten!
hier wird echt schnell geholfen!

von Wilhelm F. (Gast)


Lesenswert?

Marcel Klug schrieb:

>okay und wie bekomme ich es jetzt hin das ich mit zb
>movlw B'00000001' den ersten ausgang des 4094 auf high
>schalte?

Da müßtest du wohl das W-Register mal in die Variable cdsend kopieren.

von Marcel K. (sunny198828)


Lesenswert?

hmm und wie bekomme ich das genau hin?

entschuldigung das ich da so blöd frage

von Claus P. (claus_p)


Lesenswert?

movlw B'00000001'
movwf cdsend

www.sprut.de (Grundlagen!)

Grüße
Claus

von Wilhelm F. (Gast)


Lesenswert?

So sollte es klappen:

main
  movlw  B'00000001' ; lade W mit Konstante
  banksel .....      ; Bank, in der cdsend liegt
  movwf  cdsend      ; kopiere W in Variable cdsend
  banksel .....      ; ursprüngliche Bank, wenn nötig
  call  cd4094_send  ; Funktionsaufruf
  goto  main         ; und wieder von vorne

von Marcel K. (sunny198828)


Lesenswert?

alles klar das war das was ich gesucht hatte!
jetzt verstehe ich es auch...

Besten Dank!

von Marcel K. (sunny198828)


Angehängte Dateien:

Lesenswert?

Danke für eure hilfe!!
das funktioniert super!
habe nochmal den code angehängt funktioniert super
jetzt kann ich ja zu meinem eigentlichen projeckt starten.
muss nur noch schauen wo ich 512 LED's herbekomme^^

von K. J. (Gast)


Lesenswert?

Hi,

du kannst natürlich auch cdsend in der Routine gegen W tauschen was ein 
schiebebefehl spart

von juppi (Gast)


Lesenswert?

Hallo
Muß denn OE mitgeschaltet werden?
Kann das Byte CDSend nicht mit dem Schiebebefehl
in einer 8ter Schleife ausgegeben werden.
Danach Str H/L und Ende.
Sonst wirst du mit deiner Programmstruktur mit 512
einzeln anzusteuernden Dioden ein wenig Schreibarbeit leisten müssen.

Gruß

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.