4094 Schieberegister mit PIC 16F627 ansteuern

Gast #1193988
Lesenswert?

Hallo,
ich habe ein kleines Problem. Ich würde gern ein 4094 Schieberegister 
mit einem PIC16F627 ansteuern (CLK -> RB0; DATA -> RB1). Am 
Schieberegister habe ich 8 LEDs angeschlossen. Ich habe schon im 
Internet und hier im Forum nach einer Lösung gesucht, aber hier findet 
man nur Lösungen für ATMEL µC. Auch selbst hab ich schon probiert aba 
das funzt auch nich recht. Im Anhang hab ich mal meine ASM Datei 
reingepackt, sodass ihr mal gucken könnt was ich falsch mache.
Als erstes habe ich mir gedacht das ich das Speicherregister 'daten' 
immer um eins erhöhe und das 0. Bit abfrage ob es eins ist. Wenn es eins 
ist dann soll er auch für den Dateneingang ne eins setzen, bei null soll 
er den Dateneingang rücksetzen. Weil ich also nur das erste Bit abfrage, 
ersteht so eine bitfolge von '01010101', was er dann über das 
schieberegister an die LEDs 'sendet'. Sollte man eigendlich denken, aber 
so ist es nicht.

Könnt ihr mir weiterhelfen?
Angehängte Dateien:
Gast #1194035
Lesenswert?

Hallo Karl,

vermutlich hast du hier eine Endlosschleife programmiert:

Auszug aus deinem Listing:

....

main
  goto takt

takt
  bsf PORTB,1          ; Takt fuer den CLK eingang
  call warten
  bcf PORTB,1
  call warten
  goto takt


....
Gast #1194060
Lesenswert?

@was-willst-du:
STROBE und OE sind auf +
und nein ich weiss nicht was er macht. ich habe aber im Internet 
Schaltpläne gesehen wo er auf + war, also dacht ich mir das das ok wär, 
genauso wie der Enable.

@Shibbi:
Hier der Quick-Schaltplan (in Anhang), ohne Wiederstäne auf die Schnelle 
gemacht. Vllt hilft es euch ja.

@Rainer:
Ja die Endlosschleife ist beabsichtigt, er soll erstmal eine Konstante 
01-Folge generieren. Oder muss man immer 8-Bit Abschnitte senden?

An alle:
Danke für die schnelle Antwort. Es geht aber immernoch nicht. Die LEDs 
Leuchten, aber in einer mir nicht ersichtlich logischen kombination. Ich 
weiss echt nicht mehr weiter.
Angehängte Dateien:
Persönliche Seite #1194135
Lesenswert?

Ist total verquert deine programmierweise. Du musst folgendes tun:

Der Ruhezustand von CLK sollte High sein, dann

1. Dein Bit auf Data legen
2. CLK auf Low schalten
3. Ein bis zwei Befehle lang warten (NOPs)
4. CLK wieder auf High schalten (damit wird das Bit in das SR geschoben)
5. Deine Warteschleife abarbeiten.
6. wieder bei 1. weitermachen

Besser ist aber, du verwendest auch Strobe. Damit kannst du die 8 Bit 
erst mal in das SR rein schieben, ohne dass sich an den Ausgängen etwas 
ändert. Dann aktivierst du Strobe und die 8 reingeschobenen Bits werden 
mit einmal auf die Ausgänge geschaltet. Zum Experimentieren kannst du 
Strobe aber erst mal auf + lassen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren