Z80 CTC Programmierung - die Anwenderbeispiele |
![]() |
![]() |
Letztmalig dran rumgefummelt: 18.08.09 18:01:38 |
1. Dappisches Programm zur
Kanalsteuerung in verschiedenen Modi
2. Effizientes Programm zur CTC-Programmierung
3. CTC-Programmierung
CTC-Test-Programm im Interruptmode 2 |
![]() |
![]() |
Aufgabe: Unter Verwendung der Subroutine DAK1 ist nach Programmierung der CTC-Kanäle in verschiedenen Modi wahlweise der Zustand je eines Counters einzulesen sowie anzuzeigen - die Zeichentabelle befindet sich hier!
Lösungsalgorithmus: Die Initialisierungswerte der Kanäle werden durch die Tabelle ab 2020H indiziert, anschließend die Zählerstände der rückwrtszähler der Reihe nach angezeigt, indem Register C heruntergezählt und Indexregister IX heraufgezählt wird. Bei der Zeichenanzahl die Leerzeichen nicht vergessen und gut sind vor der Wiederholung ebenfalls einige Leerzeichen!!!
Anmerkungen zur Steuerung:
AF, A'F', B'C', D'E' werden zerstört
![]() |
FAQ - The Most Wanted Requested Commands ;-) |
![]() |
Tallarische Befehlsliste und der Schnellversteh-Blockaufbau für die Hosentasche - leider sehr alt und gebraucht ;-) - leider nicht ganz vollständig (kanns't 'de aber vergessen - sind seltene Befehle) |
![]() |
Alphabetische Liste des Z80 Befehlssatzes sowie die LC-80-Befehlsliste gescannt (also Original und damit fehlerfrei) |
![]() |
WORD-Dokument der Alphabetischen Liste - Achtung - kleine Fehler in selten benötigten Befehlen - laufend aktualisiert! |
![]() |
Numerische Liste des Z80 Befehlssatzes |
![]() |
WORD-Dokument der numerischen -Liste - Achtung - kleine Fehler in selten benötigten Befehlen - laufend aktualisiert! |
![]() |
Allgemeine Funktionssymbolik |
![]() |
Befehlsbeschreibung und FLAG-Wirkung auf Befehle |
... und hier nochmals die Übersicht zu dem Befehlslisten des Z80 (U880) Mikroprozessors
LC-80 Zeichencodetabelle - vergiss den ASCII ;-)
Marke | Adresse | Hex-Code | Assembler-Code | Kommentar |
ORG 2000H | ;Adresse Programmbeginn | |||
EXIT: | 2000H | DD 21 20 20 | LD IX, 2020H | ;Index auf Anfang der Zeichentabelle 2020H |
200BH | F5 | PUSH AF | ;Programm STOPP | |
200BH | C5 | PUSH BC | ;Programm STOPP | |
200BH | D5 | PUSH DE | ;Programm STOPP | |
200BH | E5 | PUSH HL | ;Programm STOPP | |
DISP: | 2004H | CD 5A 04 | CALL DAK1 | ;Call Subroutine auf 045AH |
200BH | E1 | POP HL | ;Programm STOPP | |
200BH | D1 | POP DE | ;Programm STOPP | |
200BH | C1 | POP BC | ;Programm STOPP | |
200BH | F1 | POP AF | ;Programm STOPP | |
2007H | FE 10 | CP 10H | ;Taste "+" gedrückt? | |
2009H | 20 F9 | JRNZ DISP | ;springe auf 2004H, wenn nicht ZERO (falsche Taste) | |
200BH | 76 | HALT | ;Programm STOPP | |
EQUATE | ||||
2020H | ORG 2020H | ;DATEN Adresse | ||
2020H | AE | DEFB 06BH | ;Code für "S" | |
2021H | E3 | DEFB 0CEH | ;Code für "U" | |
2022H | 4F | DEFB 0E3H | ;Code für "P" | |
2023H | C2 | DEFB 0CAH | ;Code für "L" | |
2024H | CE | DEFB 0CAH | ;Code für "E" | |
2025H | 6B | DEFB 0CEH | ;Code für "H" |
Beispiel für eine kleine Anweisungstabelle in vollständiger Mnemoic-Codierung
4. Handshake-Prinzip und Interruptprogrammierung
5. Byte-Ausgabe mit Handshake-Betrieb
6. Dappisches Programm zur
Kanalsteuerung
7. Effizientes Programm zur
PIO-Programmierung
Einfaches Programm zur CTC-Programmierung |
![]() |
![]() |
![]() |
![]() |
Programmlisting |
![]() |
|
![]() |
|
![]() |
|
![]() |
2.Effiziente CTC-Programmierung |
![]() |
![]() |
![]() |
![]() |
Programmlisting |
![]() |
alle 8-Bit Ergebnisse arithmetischer Operationen stehen grundsätzlich im Akkumulator |
![]() |
zwei 8-Bit-Register können funktional zu einem 16-Bit-Register zusammengefasst werden |
3. CTC-Programmierung |
![]() |
![]() |
![]() |
![]() |
CTC-Programmierung |
![]() |
Programme zur CTC-Programmierung |
4. Handshake und Interruptprogrammieung |
![]() |
![]() |
![]() |
![]() |
|
![]() |
5. Byteausgabe mit Handshake-Betrieb |
![]() |
![]() |
![]() |
![]() |
Programmlisting für LC-80 (eine Anpassschaltung am Port wird benötigt) |
![]() |
Unsere "Hello World"-Anwendung sollte jetzt funktionieren. |