LC-80 CTC-Einlesen ohne Interrupt |
![]() |
![]() |
Letztmalig dran rumgefummelt: 09.01.14 16:48:07 |
|
|
|||||
|
|
Eigene Aufgabe 3 Systembausteine programmieren: an einem beliebigem Kanalausgang soll jede Sekunde genau eine fallende Flanke registriert werden.
Vorbetrachtungen:
die Taktfrequenz des LC-80 beträgt 900 kHz ein Kanal kann bis zu einem 0-Durchlauf maximal 255 × 255 = 65025 Impulse verarbeiten
900.00 : 65025 = 13,8408 d.h., alle rund 1/14 Sekunden gibt das einen Impuls am Zählerausgang
Pseudocode zum Programm:
Kanal 0 initialisieren - Kanal 0 mit max. Vorteiler und Zeitkonstante
marke | pseudocode |
registerpaar HL startadresse der einlesevorgänge (hier SETBASE COUNTER) | |
Kanal initialisieren | |
Zeitkonstante 0FFH auf Kanal 0 schreiben | |
register E anzal der einlesevorgänge (hier 255D) | |
register C kanaladresse für CTC-Kanal 0 (hier ECH) | |
read: | register B verzögerungszeit zum CTC-Kanal einlesen (hier 01H) |
delay: | decrementiere B und springe zu delay, wenn nicht 0! |
aktuellen rückwärtszählerstand einlesen | |
aktuellen rückwärtszählerstand auf aktuelle speicherzelle schreiben | |
speicherplatzadresse incrementieren | |
elementezähler decrementieren | |
wenn nicht alle Elemente, dann neu einlesen (sprung zu read) | |
end |
Zeile | Marke | Block | Adresse | Hex-Code | Assembler-Code | Kommentar |
0001 | ORG 02000H | |||||
0002 | INIT | 02000H | 21 1B 20 | LD HL,COUNTER | ;Zeiger auf ersten Speicherplatz | |
0003 | 02003H | 1E FF | LD E,0FFH | ;Anzahl der Einlesevorgänge | ||
0004 | 02005H | 0E EC | LD C,0ECH | ;Kanaladresse für CTC-Kanal 0 | ||
0005 | 02007H | 3E 25 | LD A,025H | ;CTC Kanalsteuerwort | ||
0005 | 02009H | ;Steuerwortkennung Bit 0 gleich "1" | ||||
0005 | ;kein Kanal-RESET - Bit 1 gleich "0" | |||||
0005 | ;Zeitkonstante folgt Bit 2 gleich "1" | |||||
0005 | ;kein externer TRIGGER - Bit 3 gleich "0" | |||||
0010 | ;SLOPE L-Flanke - Bit 4 gleich "0" | |||||
0011 | ;256/16 - Vorteiler 256 - Bit 5 gleich "1" | |||||
0012 | ;MODE Zähler - Bit 6 gleich "1" | |||||
0013 | ;kein Interrupt EI/DI Bit 7 gleich "0" | |||||
0014 | 02009H | ED 79 | OUT (C),A | ;Steuerwort auf Kanladresse | ||
0015 | 0200BH | 3E FF | LD A,0FFH | ;Zeitkonstante laden | ||
0016 | 0200DH | ED 79 | OUT (C),A | ;Zeitkonstante auf Kanladresse | ||
0017 | READ: | 0200FH | 06 01 | LD B,001H | ;Zeitverzögerung bis zum nächsten Einlesen | |
0018 | DELAY: | 02011H | 10 FE | DJNZ DELAY | ;Dekrement B und Sprung Zeitverzögerung | |
0019 | 02013H | ED 78 | IN A,(C) | ;aktuellen Counterstand einlesen | ||
0020 | 02015H | 77 | LD (HL),A | ;Zählerstand auf RAM schreiben | ||
0021 | 02016H | 23 | INC HL | ;nächste Speicherzelle einstellen | ||
0022 | 02017H | 1D | DEC E | ;Elementezähler decrementieren | ||
0023 | 02018H | 20 F5 | JR NZ,READ | ;wenn nicht alle Elemente, dann neu einlesen | ||
0024 | 0201AH | 76 | HALT | ;wird erreicht, wenn alle 256 Elemente eingelesen sind | ||
0025 | ||||||
0026 | COUNTER: | 0201BH | SETBASE COUNTER | ;Tabelle für eingelesene Werte | ||
0027 | 0201BH | 00 | DEFB 000H |
Beispiel für eine kleine Anweisungstabelle in vollständiger Mnemoic-Codierung
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost am 21. Dezember 2013 um 19.43 Uhr |
... 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 |