Uhr mit Wecker |
![]() |
![]() |
Letztmalig dran rumgefummelt: 29.09.09 11:35:09 |
ist wahrscheinlich fehlerfrei und kann unbedenklich verwendet werden |
|
|
|
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 |