Uhr mit Wecker history menue Letztmalig dran rumgefummelt: 29.09.09 11:35:09

ist wahrscheinlich fehlerfrei und kann unbedenklich verwendet werden

die beliebte alphabetisch sortierte Schnell-Liste

die beliebte numerisch sortierte Schnell-Liste

Allgemeine FLAG-Wirkung

FLAG-Wirkung auf OP-Code-Gruppen

Z80-CTC

 

Kurzreferenz zur CTC-Programmierung

Allgemeines Interrupschema

 

Aufgabe 7: Das folgende Beispiel stellt eine Uhr dar. Als Zeitbasis wird dabei der Kanal 0 des CTC verwendet. Die aktuelle Zeit wird ständig mit der vorgegebenen Weckzeit (Stunden und Minuten) verglichen. Als Wecksignal wird die Anfangsmelodie verwendet. Durch das Drücken einer beliebigen Taste (außer RES oder NMI) wird die Melodie abgestellt und wieder die Zeit angezeigt. Das Drücken muss am Ende der Melodie erfolgen, da die Tastaturabfrage an dieser Stelle durch das Programm DAK2 erfolgt.
Vor dem Programmstart sind die Speicherplätze für Sekunden, Minuten und Stunden sowie für die Weckzeit zu setzen. Soll kein Wecken erfolgen, so ist in die Speicherplätze für die Weckzeit "0FFH"
zu schreiben.

Pseudocode zum Programm:

1.) Kanäle initialisiern

2.) Unterprogramm aufrufen

Anmerkungen zur Steuerung: Die Register IX, IY, AF, BC, DE sowie HL werden zerstört

Marke Adresse Hex-Code Assembler-Code Kommentar
ORG 02000H ;Adresse Programmbeginn
EX10: 2000H ED 5E IM 2  
  2002 3E 22 LD A, 022H ;INT.TAB H-BYTE
  2004 ED 47 LD I, A  
  2006 AF XOR A ;INT.VEC L-BYTE
  2007 D3 EC OUT (CTC0), A  
  2009 3E A5 LD A, 0A5H ;INT, ZEITGEBER, x
  200B D3 EC OUT (CTC0), A  
  200D 3E E9 LD A, 0E9H ;ZEITKONSTANTE
  200F D3 EC OUT (CTC0), A  
M1: 2011 DD 21 F2 23 LD IX, DATLED ;ADR.ANZEIGESPEICHER
  2015 CD 8308 CALL DAK2  
  2018 38 04 JR C, M2 ;SPR.,WENN KEINE TASTE
  201A AF XOR A  
  201B 32 16 22 LD (02216H), A ;WECKER LÖSCHEN
M2: 201E 3A 16 22 LD A, (02216H)  
  2021 FE 55 CP 055H  
  2023 CC EA 08 CALL Z, MONMUS ;WENN WECKZEIT
  2026 FB EI  
  2027 18 E8 JR M1  
         
      ORG 2040H  
  2040 F5 PUSH AF ;BEGINN INTERRUPT-SERVICE-ROUTINE
  2041 C5 PUSH BC  
  2042 D5 PUSH DE  
  2043 E5 PUSH HL  
  2044 21 10 22 LD HL, 02210H ;ADR.ZEITSPEICHER
  2047 06 15 LD B, 015H ;GRENZWERT TAKTE
  2049 CD 87 20 CALL INCT ;TAKTE ERHOEHEN
  2040 20 32 JR NZ, EXIT ;WENN NICHT GRENZWERT
  204E 06 60 LD B, 060H ;GRENZWERT SEKUNDE UND MINUTE
  2050 CC 87 20 CALL Z, INCT ;GGF. SEK. ERHÖHEN
  2053 CC 87 20 CALL Z, INCT ;GGF.MINUTEN ERHÖHEN
  2056 06 24 LD B, 024H ;GRENZWERT STUNDEN
  2058 CC 87 20 CALL Z, INCT ;GGF.STUNDEN ERHÖHEN
  205E 3A 11 22 LD A, (02211H)  
  205E CD C3 08 CALL DADP ;SEK.ANZEIGEN
  2061 2A 12 22 LD HL, (02212H)  
  2064 EB EX DE, HL  
  2065 CD B7 08 CALL ADRSDP ;MIN. U. STD. ANZ.
  2068 2A 12 22 LD HL, (02212H) ;TEST, OB WECKZEIT
  206B ED 5B 14 22 LD DE, (02214H)  
  206F A7 AND A  
  2070 ED 52 SBC HL, DE  
  2072 20 0C JR NZ, EXIT  
  2074 3A 11 22 LD A, (02211H)  
2077 FE 00 CP 0
2079 20 05 JR NZ, EXIT
207B 3E 55 LD A, 055H ;FLAG 'WECKEN' SETZEN
207D 32 16 22 LD (02216H), A
EXIT: 2080 E1 POP HL
2081 D1 POP DE
2082 C1 POP BC
2083 F1 POP AF
2084 FB EI
2085 ED 4D RETI ;ENDE INTERRUPT-SERVICE-ROUTINE
INCT: 2087 7E LD A,(HL) ;ZEITEINHEIT ERI!.
2088 C6 01 ADD A,01H
208A 27 DAA ;BCD-KORREKTUR
208B 77 LD (HL), A
208C 90 SUB B ;TEST, OB GRENZWERT
208D 20 01 JR NZ, NEXT
208F 77 LD (HL), A ;EINHEIT = 0, Z = 1
NEXT: 2090 23 INC HL
2091 C9 RET
ORG 2200H
2200 40 20 DEFW 02040H ;INTERRUPTVEKTORTABELLE
;SIE BILDET DIE ADRESSE DER ISR
ORG 2210H
2210 DEFB ;ZWISCHENZÄHLER
2211 DEFB ;SEKUNDEN
2212 DEFB ;MINUTEN
2213 DEFB ;STUNDEN
2214 DEFB ;WECKMINUTEN
2215 DEFB ;WECKSTUNDEN
2216 DEFB ;WECKFLAG

 Beispiel für eine kleine Anweisungstabelle in vollständiger Mnemoic-Codierung



zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost am 28. September 2009

... 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