Ich möchte in der Lage sein, korrekte Daten vom Mikrocontroller an das Schieberegister 74HC595 auszugeben, ohne die Taktleitungen separat zu verwenden. Dieses Schema entspricht meinen Ideen für 16 Datenbits:
Das Mikro, das ich verwende, basiert auf 8051 (at89C2051).
Wenn die RCK- und SCK-Leitungen separat mit dem Mikrocontroller verbunden wären, wäre mein Code zum Senden der Daten wie folgt:
RCK equ P1.1
SCK equ P1.2
DATA equ P1.3
LOWBYTE equ 20h
HIGHBYTE equ 21h
clr SCK
clr RCK
mov A,HIGHBYTE
mov R1,#8h
send1:
rlc A
mov DATA,C
nop
setb SCK
nop
clr SCK
djnz R1,send1
mov A,LOWBYTE
mov R1,#8h
send2:
rlc A
mov DATA,C
nop
setb SCK
nop
clr SCK
djnz R1,send2
setb RCK
nop
clr RCK
Aber ich habe nicht genug GPIO-Pins an meinem Mikro, um separate Taktleitungen zu ermöglichen, und ich habe nicht genug Platz auf der Platine für ein größeres Mikro. Also habe ich versucht, Code mit den Zeilen wie folgt zusammenzubinden. Hier bedeutet CK alle aneinander gebundenen Uhren:
CK equ P1.2
DATA equ P1.3
LOWBYTE equ 20h
HIGHBYTE equ 21h
clr CK
mov A,HIGHBYTE
mov R1,#8h
send1:
rlc A
mov DATA,C
nop
setb CK
nop
clr CK
djnz R1,send1
mov A,LOWBYTE
mov R1,#8h
send2:
rlc A
mov DATA,C
nop
setb CK
nop
clr CK
djnz R1,send2
Irgendwo hat jemand erwähnt, dass der Shift-Takt (SCK) dem Daten-Latch-Takt (RCK) um eins voraus ist, wenn sie verknüpft und zusammen verwendet werden, aber wie wende ich dies in meinem Code an und stelle trotzdem sicher, dass die richtigen 16-Bits gesendet werden die Ausgangsleitungen des Schieberegisters?
Idealerweise möchten Sie 16 Bit Daten mit dem SCK laden und dann alle 16 Bit parallel mit dem RCK ausgeben. Das Zusammenbinden von SCK und RCK macht einen normalen Schalt-/Ladebetrieb nahezu unmöglich. Normalerweise ist OE/G niedrig, sodass die Ausgänge immer eingeschaltet sind. Ausschalten ist nicht erforderlich, es sei denn, ein anderes 74LS585-Paar würde dieselben 16 Ausgänge ansteuern
Wenn alle 16 Ausgänge den Zustand beibehalten und dann gleichzeitig den Zustand ändern müssen, muss eine ordnungsgemäße Schalt- / Ladesequenz durchgeführt werden.
Die Idee, eine MPU richtig zu verwenden, besteht darin, so viele Pins wie nötig zu reservieren, um die Kontrolle über externe Hardware zu erlangen. Dies erfordert eine detaillierte Planung im Voraus, sodass Sie zuerst obligatorische Funktionen zuweisen.
Übermäßige Pins sind viel besser, als bei den obligatorischen Kontrollpins zu kurz zu kommen.
Nur aus Neugier, wie sind Sie auf einen Steuerpin auf einer 20-Pin-MPU gekommen? Wurden die restlichen Pins bereits für vorhandene Hardware festgelegt?
Benutzer105652
Benutzer105652
Mike – Nicht mehr hier
jonk