Forum: Mikrocontroller und Digitale Elektronik 4094 Schieberegister mit PIC 16F627 ansteuern


von karlkoch (Gast)


Angehängte Dateien:

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?

von was-willst-du (Gast)


Lesenswert?

Hat das Schieberegister einen Strobe-Eingang ?
Weißt Du, was der macht?

Ohne den zu bedienen wird nix gehen.
ASM-Code schau ich mir nicht an, erst muß die Hardware stimmen.

von Shibbi (Gast)


Lesenswert?

Schaltplan bitte -.-

von Rainer (Gast)


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


....

von karlkoch (Gast)


Angehängte Dateien:

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.

von Gast (Gast)


Lesenswert?

Guck mal ins Datenblatt was Strobe und die anderen Pins so machen....

von Rainer (Gast)


Lesenswert?

Hallo Karl,

zum Label TRANSMIT kommst du aber nicht. Du taktest nur CLOCK.

von karlkoch (Gast)


Lesenswert?

@Rainer:
Doch komm ich, schau mal ab der Sprungmarke Warten.

von Rainer (Gast)


Lesenswert?

Hallo Karl,

Entschuldige! Habe ich glatt uebersehen.

von Sven S. (stepp64) Benutzerseite


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.

von juppi (Gast)


Lesenswert?

mach es erst einmal wie sven sagt.
Aber ich  nehme andere Pins zur Ausgabe, lasse TxD u. RxD ,Int  frei zum 
Ansteuern mit dem Pc(für später)
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.