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
Gast
#1785318
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.
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?
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?
Gast
#1785402
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?
Gast
#1785407
Ah ja, OK. Wenn die Variable cdsend leer ist, wird D nie aktiv.
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
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!
Gast
#1785428
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.
hmm und wie bekomme ich das genau hin? entschuldigung das ich da so blöd frage
movlw B'00000001' movwf cdsend www.sprut.de (Grundlagen!) Grüße Claus
Gast
#1785461
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
alles klar das war das was ich gesucht hatte! jetzt verstehe ich es auch... Besten Dank!
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^^
Gast
#1785717
Hi, du kannst natürlich auch cdsend in der Routine gegen W tauschen was ein schiebebefehl spart
Gast
#1785778
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ß
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.