Z80 PIO (in der DDR U855) Funktionsbeschreibung | ![]() |
![]() |
Letztmalig dran rumgefummelt: 23.06.16 17:20:12 |
![]() |
Implementiert in ein 40-poliges DIL-Gehäuse präsentiert sich die Z80-PIO mit einem 8 Bit breitem Daten-BUS als PIO mit den Befehlen eines Prozessorsystems zum Ein- und Auslesen von 8 Bit breiten Datenbussen mit 3 leitungsfähigen Interruptmodi und einem linear adressierbarem Speichervolumen von 64 KByte (das entspricht 65536 Adressen). Die CPU verfügt über nur eine 5 Volt-Versorgungsspannung, einen Einphasentakt. Alle Ausgänge sind TTL-kompatibel und können eine Standardlast treiben - Port-Ausgänge des PIO müssen auf jeden Fall verstärkt und eventuell galvanisch entkoppelt werden. |
![]() |
1. Betriebsartenauswahl 2. Betriebsartenbeschreibung 3. PIO-Praxis |
![]() |
Warum fiel die Wahl für die Unterrichtsarbeit ausgerechnet auf den Z80 bzw. sein System? Dieser Prozessor sowie sein System vereinigt eine Reihe positiver Merkmale für den Rechentechnik-Einsteiger:
|
![]() |
Die IS U855 ist eine parallele Ein-/Ausgabe-Einheit (PIO), die ihre maximale Leistungsfähigkeit im System U880 erreicht. Sie beinhaltet zwei vollständige, nach außen TTL-kompatible
8-Bit-Ein-/Ausgabe-Kanäle und ist in ihren wesentlichen Eigenschaften programmierbar.
Typische Anwendungsfälle für die IS U855 sind parallele Schnittstellen zu Tastaturen, Kontaktabfrageeinheiten, Lochbandlesern und -stanzern, Druckern und
PROM-Programmiereinheiten. Die PIO-Einheit ist hierbei wesentlich leistungsfähiger als beispielsweise ein Interface mit der IS DS8212 (s. auch Abschn. 5.2.), da sie u. a. eine vollständige programmierbare
automatische Interruptbearbeitung ermöglicht. Dadurch ist es nicht notwendig, die Mikrorechnerperipherie mit Hilfe zyklischer Abfrage zu überwachen und zu bedienen
(sog. Polling), sondern es ist eine wesentlich zeitgünstigere Überwachung durch Interruptbearbeitung möglich. Hier wurde ein allgemeiner Überblick über Bauelemente und - Wirkungsweise eines Mikrorechners gegeben. An dieser Stelle sollen nun Anwendung und Programmierung der Schaltkreise PIO U 855 D und CTC U 857 D näher erläutert werden. Periphere Schaltkreise werden meist unmittelbar nach dem Einschaltendes Gerätes (Inbetriebnahmeprogramm) programmiert. Erst dadurch sind sie benutzbar. Bei sich ändernder Aufgabe ist eine Umprogrammierung dann irgendwo im Programm möglich. |
1. Betriebsartenauswahl | ![]() |
![]() |
![]() |
![]() |
Aus den insgesamt zwei Grundbetriebsarten kann hier nochmals eine Differenzierung der Kombination aus Interrupt- oder nicht interrptgesteuerter Programmierung, aus ex- oder intern gestartetem Modus und unter Hinzuziehung einer Zeitkonstante oder eben auch nicht gewählt werden. | ||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Rücksetzen des Z80 PIO (U855) Die parallele Ein-/Ausgabe-Einheit Z80 PIO (U855) nimmt nach
Einschalten der Betriebsspannung automatisch einen rückgesetzten Zustand ein.
Hierbei werden beide Kanäle in die Betriebsart Byteeingabe (Mode 1) gesetzt, um
einen hochohmigen Zustand an den Portdatenleitungen (A0 ... A7,
B0 ... B7) zu erreichen. Die Readysignale (A RDY, B RDY)
sind inaktiv. Außerdem werden bei beiden Kanälen jeweils die
Maskierungsregister, die Ausgaberegister und die Interruptfreigabeflipflops
rückgesetzt. M1 = L, RD = H, IORQ = H rücksetzen. Diese Signalbelegung tritt im System U880 nicht auf
und kann deshalb für diese Funktion verwendet werden. Neben diesen beiden Möglichkeiten des Rücksetzens kann die PIO
auch softwaremäßig in den durch die genannten Bedingungen charakterisierten
rückgesetzten Zustand gesetzt werden. Hierbei müssen die entsprechenden
PIO-Register einzeln geladen werden. Besondere Bedeutung kommt der Rücksetzung
des Interruptbearbeitungszustands zu. |
||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Interruptvektor - siehe auch hier sowie auch hier In der leistungsfähigen Interruptbetriebsart IM2 der CPU U880
wird von dem unterbrechenden peripheren Gerät (in diesem Fall: die PIO) ein
Interruptvektor abgefordert. Dieser Vektor wird von der PIO während des von der
CPU eingeschobenen Interruptquittierungszyklus auf den Datenbus geschaltet. Er
bildet mit dem CPU-internen Register I einen Pointer (das 8-bit-Register stellt
hierbei den höherwertigen Anteil dar), der auf eine Speicherplatzadresse zeigt.
Aus den Inhalten dieses und des nachfolgenden Speicherplatzes wird die
Startadresse des durch die Interruptanmeldung aufzurufenden Unterprogramms
gebildet.
Tabelle 1 - PIO Interruptsteuerwort nur auf Port A
Tabelle 2 - Z80 PIO-Interrptvektor-Port A Achtung muss (darf) nicht gesondert in Port B eingetragen werden - Interruptvektor Port B ergibt sich automatisch durch Einschreiben Vektor in Port A
Tabelle 3 - Z80 PIO-Interrptvektor-Port B - er ergibt sich zwangsläufig
|
2. Betriebsartenbeschreibung | ![]() |
![]() |
![]() |
![]() |
Aus den insgesamt vier
Grundbetriebsarten kann hier nochmals eine Differenzierung der Kombination
aus Interrupt- oder nicht interrptgesteuerter Programmierung gewählt werden. 1.
Byteausgabe |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Beide Kanäle der IS U855 können in einer der Betriebsarten Byteausgabe,
Byteeingabe, bidirektionaler Bytebetrieb und Bitbetrieb (ausgenommen Port B im
bidirektionalen Betrieb) arbeiten. Die Auswahl hierzu wird in der Kanallogik
durch das 2-bit-Betriebsartenregister getroffen. Dieses Register des
ausgewählten Ports kann mit Hilfe eines OUT-Befehls der CPU mit einem Steuerwort
(C/D Sel = 1) geladen werden.
Tabelle 4 - PIO-Betriebsartensteuerwort-Allgemein Die Belegung der Bits D0, D1, D2 und D3 mit 1 identifiziert das Steuerwort als Betriebsartenauswahlwort. Der Wert der Bits D4 und D5 wird nicht abgefragt. Die Bedeutung der Bits D6 und D7 für die ausgewählte Betriebsart ist in Tafel unten dargestellt.
Tabelle 5 - Z80 PIO-Betriebsartensteuerwort - Funktionale Zuordnung Bei Auswahl der Betriebsart Byteausgabe (Mode 0) können Daten durch einen
OUTBefehl der CPU in das ausgewählte Ausgaberegister der PIO eingeschrieben
werden. Der Inhalt des Ausgaberegisters wird direkt auf den zugehörigen Portbus
(A0 ... A7 bzw. B0 ... B7) durchgeschaltet. Er kann jederzeit unabhängig vom
Zustand der Quittierungssignale (A STB, A RDY bzw.
B STB, B RDY) durch eine
entsprechende OUT-Operation verändert werden. Die Quittierungssignale dienen zur
Ansteuerung der Peripherie (A RDY, B RDY) und zur Anmeldung von Interrupts durch
die Peripherie (A STB,
B STB). Der aktuelle Inhalt des aktivierten
Ausgaberegisters kann jederzeit durch eine Leseoperation (IN-Befehl der CPU)
abgefragt werden.
Tabelle 6 - Z80 Ein/Ausgabewahlregister im Einzelbitbetrieb Hierbei bedeutet das Setzen von Bits (IOm = 1), dass die der
Wertigkeit dieser Bits entsprechenden Busleitungen (Am bzw. Bm)
des ausgewählten Kanals als Eingänge wirken. Umgekehrt definiert das Rücksetzen
(IOm = 0) die zugehörigen
Busleitungen (Am bzw. Bm) als Ausgänge. Das Steuerwort ist nicht besonders als
Ein-/Ausgabe-Wahlwort gekennzeichnet (alle 8 bit werden zur
Informationsübertragung verwendet), da automatisch nach Auswahl der Mode 3 das
nächste in die Kanallogik eingeschriebene Steuerwort zur Ein-/Ausgabe-Wahl
verwendet wird. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Interruptsteuerwort Bei der IS U855 erfolgt die Auslösung von Interruptanmeldungen in Abhängigkeit
von der für den Kanal ausgewählten Betriebsart. Bei den bytebezogenen
Betriebsarten (Mode 0, 1 und 2) erfolgt die Anmeldung mit Hilfe der
Quittierungslogik. In der Betriebsart Bitbetrieb (Mode 3) erfolgt die
Interruptanmeldung durch eine programmierbare logische Auswertung der am Portbus
anliegenden Datenkonfiguration.
Tabelle 7 - PIO-Interruptsteuerwort (nur im Interrptmode von PIO und CPU zu setzen)
Die Belegung der Bits D0 bis D3 identifiziert das
Steuerwort als Interruptsteuerwort. Das Bit D7 des Wortes beeinflusst
das Interruptfreigaberegister (Interruptenableflipflop) des programmierten
Kanals. Bei Setzen dieses Bits (D7 = 1) erfolgt die Weitergabe von
anhängigen Interruptanmeldungen, die durch die PIO-Interruptlogik ausgelöst
wurden, an den Steuereingang INT der CPU U880. Bei rückgesetztem Bit D7
(D7 = 0) wird die Weitergabe dieser Anmeldung an die CPU verhindert.
In diesem Fall wird aber eine durch die Peripherie ausgelöste Interruptforderung
in der PIO abgespeichert. Wird das Interruptfreigabeflipflop des betreffenden
Kanals im späteren Programmablauf wieder gesetzt (D7 = 1), gelangt
dieser abgespeicherte Interrupt zur Anmeldung an die CPU. Diese Anmeldung
erfolgt auch, wenn seitens der Peripherie dieser Interrupt nicht mehr aktuell
ist (also die den Interrupt auslösende Bedingung aufgehoben ist). Die PIO
reagiert hierbei unabhängig von der Art der Interruptanmeldung, die durch die
Betriebsart des Kanals festgelegt wird. Eine anhängige Anmeldung geht aber
verloren, wenn zum Zeitpunkt dieser Interruptforderung die PIO bereits eine
Interruptbearbeitung hat (Interruptbearbeitungsflipflop der Kanallogik gesetzt)
und das auslösende Ereignis zum Zeitpunkt der Rückkehr aus dieser ISR nicht mehr
aktuell ist.
Tabelle 8 - Z80 Interrptmaskierungsregister im Einzelbitbetrieb Hierbei bedeutet das Rücksetzen der verwendeten Maskierungsbits
(MBm = 0), dass die in der Wertigkeit korrespondierenden Bits des
Portbusses (Am bzw. Bm) zur logischen Auswertung bei der
Interrupterzeugung herangezogen werden. Bei Setzen der Bits (MBm = 1)
werden die zugehörigen Portleitungen (Am bzw. Bm) nicht
bewertet.
Tabelle 9 - PIO-Betriebsartensteuerwort-Allgemein Durch Bit D7 kann das Interruptfreigabeflipflop (IFF) beeinflusst werden (D7 = 0, IFF rückgesetzt; D7 = 1, IFF gesetzt), ohne dass weiter Informationen in die PIO eingeschrieben werden müssen. Dieses Steuerwort, das durch die Bitbelegung D0 bis D3 charakterisiert wird, kann deshalb insbesondere zur Beeinflussung der PIO-Interruptfreigabe im Programmablauf benutzt werden. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Nach Auswahl der Betriebsart Byteausgabe mit dem entsprechenden
Steuerwort nimmt das dem angesprochenen PIO-Kanal entsprechende READY-Signal (A
RDY oder B RDY) einen inaktiven Zustand ein. WR' = RD + CE + C/D + IORQ. Nachdem dieses Signal inaktiv geworden ist, also nach dessen steigender Flanke, sind die von der CPU übertragenen Daten auf dem entsprechenden Portbus verfügbar. Dieser Zustand wird der Peripherie angezeigt, indem das zugehörige READY-Signal (A RDY oder B RDY) nach der nächsten fallenden Flanke des Systemtakts aktiv wird (also H-Pegel führt). Eine positive (steigende) Flanke des in der Peripherie zu erzeugenden Quittierungssignals (A STB bzw. B STB) bewirkt danach ein Rücksetzen des READY-Signals ebenfalls nach der nächsten fallenden Taktflanke. Gleichzeitig kann von dieser Flanke des STROBE-Signals in Abhängigkeit vom zuvor programmierten Zustand des Interruptfreigabeflipflops der Portlogik und abhängig von der aktuellen Priorität des PIO-Kanals eine Interruptanmeldung an die CPU ausgelöst werden.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Betriebsart Byteeingabe Nach Initialisierung des angesprochenen
PIO-Kanals in dieser Betriebsart nimmt die zugehörige READY-Linie (A RDY bzw. B
RDY) einen inaktiven Zustand ein. Mit diesem Status wird der Peripherie
angezeigt, dass das Eingaberegister keine neuen Daten erwartet. Umgekehrt wird
mit aktivem READY-Ausgang signalisiert, dass das Porteingaberegister zuvor von
der CPU gelesen wurde.
RD' = RD + CE + C/D + IORQ. (3.2.2) Nach
Beendigung dieser Operation (inaktives
RD'-Signal) erfolgt das erneute Setzen des READY-Ausgangs nach der
nächsten fallenden Taktflanke. Der Peripherie wird an gezeigt, dass der PIO neue
Daten erwartet. Der Ausgangszustand für einen neuen Einschreibvorgang ist somit
erreicht. |
![]() |
Bidirektionaler Betrieb Bei Auswahl dieser Betriebsart für den Kanal A der Ein/Ausgabe-Einheit muss Kanal B die Mode Bitbetrieb gesetzt werden. Das ist erforderlich, weil alle vier Quittierungssignale (A RDY, A STB, B RDY, B STB) für die Steuerung des bidirektionalen Datenaustauschs über den Portbus A durch die Peripherie genutzt werden. Im Bild unten ist das Zeitverhalten am PIO bei ausgewählter Betriebsart 2 dargestellt.
|
||
![]() |
Bitbetrieb Bei Anwendung der Betriebsart Bitbetrieb werden die
Quittierungssignale des ausgewählten Kanals nicht benutzt. Das READY-Signal (A
RDY bzw. B RDY) führt L-Pegel, ausgenommen B RDY, wenn Kanal A im
bidirektionalen Betrieb arbeitet. Die Auslösung von Interruptanmeldungen erfolgt in der Betriebsart Bitbetrieb
durch logische Auswertung der auf dem Portbus anliegenden aktuellen Bitbelegung.
Diese Auswertung bezieht sich also sowohl auf die Bits des Portbusses, die als
Eingänge wirken und ihre Belegung von der Peripherie erhalten, als auch auf die
als Ausgänge definierten Bits, die durch das Ausgaberegister belegt werden.
Durch den Inhalt des Maskierungsregisters ist bestimmt, welche dieser Bits einen
Einfluss auf die logische Auswertung haben. Das 2-bit-Maskierungssteuerregister
legt nun fest, mit welchem Pegel (H oder L) und welcher Funktion (OR oder AND)
die Auswahl erfolgt. Als logische Funktion der Bitauswertung kann deshalb die
AND-, NAND-, OR- oder NOR-Verknüpfung der nichtmaskierten Bits des Portbusses
verwendet werden. |
||
![]() |
Interruptbearbeitung Die Erzeugung von Interrupts erfolgt in den
bytebezogenen Betriebsarten mit Hilfe des Quittierungssignals
STROBE bzw. im Bitbetrieb durch
logische Auswertung der aktuellen Portbusbelegung. Voraussetzung hierfür ist,
dass die betrachtete PIO (-Kanal) in der Interruptkette (daisy chain) die
höchste Priorität aufweist (IEI = 1). Interruptanmeldung des PIO-Ports Nach Empfang dieser Quittierung befindet sich der PIO-Kanal im
Interruptbearbeitungszustand. Er sendet seinen Interruptvektor an die CPU, und
programmäßig wird eine durch diese Interruptanmeldung aufgerufene ISR
eingeschoben. Die INT-Linie wird durch diesen PIO-Kanal wieder freigegeben. Das
Ende einer ISR wird durch den CPURückkehrbefehl RETI gekennzeichnet. Interruptquittierung des PIO-Ports Ist im anderen Fall das Interruptfreigabeflipflop der CPU im Befehlsablauf
der ISR der niederwertigeren PIO nicht gesetzt worden, so erfolgt keine
Unterbrechung des laufenden Unterprogramms. Der höherwertige PIO-Kanal meldet
weiter seinen Interrupt an (INT 0); sein Freigabeausgang führt ebenfalls weiter
L-Potential (IEO = 0). Somit empfängt die niederwertigere IS am Eingang IEI
ebenfalls L-Pegel (IEI = 0). Damit nun der im Interruptbearbeitungszustand
befindliche PIO-Kanal die RETI-Instruktion erkennen kann, muss der IEO-Ausgang
der anmeldenden, aber nicht bearbeiteten höherwertigen IS nach Erkennen des
Befehlsbytes ED (l. RETI-Byte) für die Dauer eines
M1-Zyklus auf H-Pegel geschaltet
werden. Dadurch führt der IEI-Eingang bei Empfang des zweiten Befehlsbytes 4D
der RETI-Instruktion H-Potential und kann den Interruptbearbeitungszustand
verlassen. Interruptquittierung des PIO-Ports Zusammenfassend lässt sich aus diesen Bedingungen die logische Funktion des
PIOAusgangs IEO darstellen: |
||
![]() |
Einsatz der PIO in Mikrorechnersystemen
Hardware Die Signalkonfiguration der IS U855 erlaubt eine direkte Zusammenschaltung
mit dem Prozessor U880. In Mikrorechnerminimalsystemen kann deshalb eine direkte
Kopplung der Daten- und Steuerbuslinien erfolgen Bei der Interruptkaskadierung der PIO mit weiteren peripheren Elementen mit
Hilfe der IEI - IEO-Linie wird in großen Rechnersystemen (mehr als sechs
Elemente) eine Hardwarelösung benötigt, die die Verzögerung der Weitergabe des
L-Pegels in der Prioritätskette kompensiert. Im Bild unten ist eine Möglichkeit
für eine derartige Logik dargestellt. Software Die Initialisierung der parallelen Ein-/Ausgabe-Einheit U855 erfolgt
üblicherweise zusammen mit den anderen peripheren Systemelementen zu Beginn des
Hauptprogramms. Zu dieser Anfangsinitialisierung gehören das Laden der
Interruptvektoren, das Festlegen der Betriebsarten und das Laden der
Kanalsteuerregister. Nach Einschalten der Betriebsspannung nimmt die PIO
automatisch die Betriebsart Eingabe ein. Somit befinden sich |
||
![]() |
Zusammenfassung In der Tafel unten ist die Programmierung des Z80 PIO (U855) zusammenfassend dargestellt. |
3. PIO-Praxis | ![]() |
![]() |
![]() |
![]() |
Aus den insgesamt zwei Grundbetriebsarten kann hier nochmals eine Differenzierung der Kombination aus Interrupt- oder nicht interrptgesteuerter Programmierung, aus ex- oder intern gestartetem Modus und unter Hinzuziehung einer Zeitkonstante oder eben auch nicht gewählt werden. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Eine PIO enthält zwei Kanäle (A und B) mit je 8 Bit Datenbusbreite und je zwei Steuersignalen
(STB, RDY), die unabhängig voneinander arbeiten (Ausnahme: bidirektionale Betriebsart). An die
Kanäle wird die Peripherie 'des Mikrocomputers angeschlossen (z. B. Tastatur, Magnetband- und Druckeransteuerung). Die PIO dient als Trennstelle zwischen den Signalen- des Computers und denen der
Eine und Ausgabegeräte.. Jeder: Kanal kann wahlweise in einer von drei Betriebsarten arbeiten. Die bidirektionale Betriebsart kann nur
über Kanal A erfolgen:
Hier werden dem peripheren Gerät (z. B. - Drucker) Daten zur Verfügung gestellt, die es
hardwaremäßig weiterverarbeitet. Zur Anpassung der verschiedenen Übertragungsgeschwindigkeiten zwischen
Computer und Peripherie können die Steuersignale des Kanals dienen (Bild 1). Am Beispiel Drücker soll das erklärt werden. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Nach Auswahl der Betriebsart Byteausgabe mit dem entsprechenden Steuerwort nimmt das dem angesprochenen PIO-Kanal entsprechende READY-Signal (A RDY oder B RDY) einen inaktiven Zustand ein.
Das Ausgaberegister der Portlogik dieses Kanals ist direkt auf den Portbus (A oder B) geschaltet.
Programmierbeispiel 2. Eingabe
Das periphere Gerät gibt Daten in den Computer ein, die softwaremäßig weiterverarbeitet werden. Zum Verständnis der Arbeitsweise der beiden Steuersignale (Bild 2) soll der Signalaustausch am Beispiel einer Tastatureingabe erläutert werden. Mit dem aktiven RDY-Signal bedeutet der PIO der Tastatur, dass sie Daten liefern darf (dieses RDY=„H" wird meist durch eine sogenannte „Blindeingabe" gleich nach dem Einschalten des Computers softwaremäßig. erreicht). Irgend jemand drückt eine Taste. Deren Kodierung liegt für, die Zeit des Drückens an den Datenleitungen des Kanals. Außerdem wird. hardwaremäßig dafür gesorgt, dass jede Tastenbetätigung den -BIT-B-Eingang des PIOs aktiviert (Bereitstellung von neuen Daten). Der PIO beendet mit der „L/H"-Flanke von STB seine Übernahmebereitschaft und zeigt das der Tastatur mit RDY „L" an (Daten sind übernommen und Weiterverarbeitung angemeldet). Letzteres geschieht durch Aktivieren der MT-Leitung zur ZVE (Anforderung, dass das laufende Programm zu unterbrechen und die Daten entgegenzunehmen sind). Die ZVE macht das, wenn sie Zeit hat, durch einen Eingabebefehl und widmet sich nach der Verarbeitung der Daten wieder anderen Dingen. Der PIO setzt RDY wieder auf „H" (Übernahmebereitschaft des PIOs für neue Daten).
4. Bidirektionaler Betrieb Bild 4 Beispiel für eine Prioritätenkette aus interruptgebundenen Schaltkreisen Diesen so kompliziert klingenden Vorgang soll ein Beispiel verdeutlichen (Bild 3). Dabei wurde im Inbetriebnahmeprogramm das Interruptregister der
ZVE mit 00 und der Tastatur-PIO mit dem Interruptvektor C0H programmiert. Bei Tastendruck meldet der PIO einen Intenupt an. Nach der Quittung durch die ZVE legt er
C0H auf den Datenbus: Mit Hilfe des I-Registers liest die ZVE den Inhalt der Zeigeradresse
00C0H (=25D) und definiert das als niederwertigen Teil der Startadresse (in diesem Falle des
Tastaturprogrammes). Zum Laden des höherwertigen Teiles maß. der nächsthöhere Speicherplatz mit abgefragt
werden (00C1H mit 03H). Jetzt beginnt die ZVE das Programm bei 0325. Am Ende des Tastaturprogramms bewirkt der Befehl RETI eine Rückkehr an die Stelle, an der das Programm durch den Interrupt
unterbrochen wurde. Bild 5: Beispiel zur PIO-Programmierunq - nur symbolische Darstellung (direkter Anschluss von Lampen an PIO-Ausgänge ist nicht möglichl); nur ST 1 oder ST 2 sollen Interrupt auslösen- die Lampen sollen in der angedeuteten Weise leuchten; PIO-Adressen von 04 bis 07 Wenn im System also eine RESET-Taste vorhanden ist, muss hardwaremäßig für eine Bildung des M1-Signals gesorgt werden. Ansonsten könnte folgendes passieren: Ein
PIO wird im Programm gerade umprogammiert, für das nächste Steuerwort ist eine Marke angekündigt. Jetzt
veranlasst ein RESET die ZVE, bei Adresse 0000 mit der Arbeit anzufangen. Dort werden bald die peripheren Schaltkreise programmiert. Das erste Steuerwort wird nun jedoch, als Maske definiert, was zu einer Fehlprogrammierung des PIOS fuhrt. An als Ausgänge
programmierte Kanalleitungen darf nur eine TTL-Last angeschlossen werden. Ausgänge des Kanals B können direkt Darlington-Transistoren treiben, sind aber auch TTL-kompatibel.
Programmierung des PIO
Tabelle 1 - PIO-Portadressierung
Mit S6 und S7 wird die Betriebsart des Kanals ausgewählt (Tabelle 2). Bei den Betriebsarten 0 bis 2 wird nur noch das Intenuptsteuerwort benötigt.
Dieses Maskenwort muss mach dem Steuerwort Betriebsartauswahl folgen und legt fest, welche Anschlüsse als Eingänge (E =1) und als Ausgänge (E - 0) verwendet werden sollen.
Es werden mit 0 die Eingänge markiert, die Interrupt geben dürfen. Ein abschließendes Beispiel im Bild 5 -und Tabelle 3- soll die Programmierung eines PIO verdeutlichen. Dabei wird der Kanal A als Ausgabekanal und der' Kanal B mit Bitsteuerung gewählt. Der
Anschluss
der Lampen und Tasten an die PIO-Kanalleitungen ist symbolisch gemeint und ohne hardwaremäßige
Ankopplung nicht empfehlenswert! Der kleine Programmabschnitt wird in der Praxis eleganter mit einem automatischen Ausgabebefehl und einer Tabelle gelöst, ist in, der
angegebenen Form aber übersichtlicher.
Tabelle 2 - PIO-Programmierung Kurzreferenz |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost im Oktober 1998 |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |