;****************************************************************************** ; ; Unterprogramme zur Displayansteuerung ; ;****************************************************************************** TEXTADR .EQU 0000h ; Startadresse des Textbereiches ATTRBADR .EQU 0400h ; Startadresse des Attributbereiches CGRAMADR .EQU 0800h ; Startadresse des CG-RAMs ;------------------------------------------------------------------------------ ; Kontroller Konstanten ;------------------------------------------------------------------------------ CURPTRSET .EQU 021h ; Cursor Pointer Set OFFREGSET .EQU 022h ; Offset Register Set ADRPTRSET .EQU 024h ; Address Pointer Set TEXTHOME .EQU 040h ; Text Home Address TEXTAREA .EQU 041h ; Text Area Set ATTRBHOME .EQU 042h ; Attribut/Grafik Home Address ATTRBAREA .EQU 043h ; Attribut/Grafik Area Set MODESET .EQU 08Ch ; Mode Set Command: CG-ROM + Text Display Only DISPMODE .EQU 09Ch ; Display Mode Set: Text On + Cursor OFF CURPATTERN .EQU 0A0h ; Cursor Pattern Set: 1 Zeile AUTOWRITE .EQU 0B0h ; Data Auto WRITE Set AUTOREAD .EQU 0B1h ; Data Auto READ Set AUTOEND .EQU 0B2h ; Data Auto Mode End DATAWRITE .EQU 0C0h ; 1 Byte ausgeben DATAREAD .EQU 0C1h ; 1 Byte lesen ;------------------------------------------------------------------------------ ; Makro Definitionen ;------------------------------------------------------------------------------ #define DISPBEF SETB CD ; Befehlsmodus fr Display #define DISPDAT CLR CD ; Datenmodus fr Display #define DISPOUT MOV DPORT,A #defcont \ CLR WR #defcont \ SETB WR #define DISPIN MOV DPORT,#255 #defcont \ CLR RD #defcont \ MOV A,DPORT #defcont \ SETB RD #define STATUS01 SETB CD #defcont \ MOV DPORT,#255 #defcont \ CLR RD #defcont \ MOV A,DPORT #defcont \ SETB RD #defcont \ JNB A.0,$-6 #defcont \ JNB A.1,$-9 #define STATUS2 SETB CD #defcont \ MOV DPORT,#255 #defcont \ CLR RD #defcont \ MOV A,DPORT #defcont \ SETB RD #defcont \ JNB A.2,$-6 #defcont \ CLR CD #define STATUS3 SETB CD #defcont \ MOV DPORT,#255 #defcont \ CLR RD #defcont \ MOV A,DPORT #defcont \ SETB RD #defcont \ JNB A.3,$-6 #defcont \ CLR CD #define SET_ADDRESS MOV A,#ADRPTRSET #defcont \ ACALL BEFOUT3 ;------------------------------------------------------------------------------ ; initialisiert das Display: Textbereich von 0000h - 01FFh ; Attribute von 0200h - 03FFh ; CG-Ram von 0800h - 1000h ; šbergabe: - ; Rckgabe: - ; ; Ver„nderte Register: A, DPTR ;------------------------------------------------------------------------------ DISP_INIT: MOV DPTR,#TEXTADR MOV A,#TEXTHOME ; Text Home Address Set ACALL BEFOUT3 MOV DPL,MAXSPALTE MOV DPH,#0 MOV A,#TEXTAREA ; Text Area Set ACALL BEFOUT3 MOV DPTR,#ATTRBADR MOV A,#ATTRBHOME ; Attribut Home Adress ACALL BEFOUT3 MOV DPL,MAXSPALTE MOV DPH,#0 MOV A,#ATTRBAREA ; Attribut Area Set ACALL BEFOUT3 MOV DPL,#1 MOV DPH,#0 MOV A,#OFFREGSET ; Adresse vom CG-RAM ACALL BEFOUT3 MOV A,#MODESET ; Mode Set: CG-RAM und nur Text ACALL BEFOUT1 MOV A,#DISPMODE ; Display Mode: nur Text, Cursor Aus ACALL BEFOUT1 RET ;------------------------------------------------------------------------------ ; Gibt einen 1-Byte Befehl zum Display aus ; ; šbergabe: A = Auszugebender Befehl ; Rckgabe: - ; ; Ver„nderte Register: - ;------------------------------------------------------------------------------ BEFOUT1: PUSH A ; Befehl auf Stack sichern STATUS01 POP A ; Befehl vom Stack holen DISPOUT ; und ausgeben RET ;------------------------------------------------------------------------------ ; Gibt einen 2-Byte Befehl zum Display aus ; ; šbergabe: DPL = Datenbyte ; A = Auszugebender Befehl ; Rckgabe: - ; ; Ver„nderte Register: - ;------------------------------------------------------------------------------ BEFOUT2: PUSH A ; Befehl auf Stack sichern STATUS01 DISPDAT ; Display im Datenmodus MOV A,DPL ; Daten in den A DISPOUT ; und ausgeben STATUS01 POP A ; Befehl vom Stack holen DISPOUT ; und ausgeben RET ;------------------------------------------------------------------------------ ; Gibt einen 3-Byte Befehl zum Display aus ; ; šbergabe: DPL = Datenword lower Byte ; DPH = Datenword higer Byte ; A = Auszugebender Befehl ; Rckgabe: - ; ; Ver„nderte Register: - ;------------------------------------------------------------------------------ BEFOUT3: PUSH A ; Befehl auf Stack sichern STATUS01 DISPDAT ; Display im Datenmodus MOV A,DPL ; Low-Byte Daten in den A DISPOUT ; und ausgeben STATUS01 DISPDAT MOV A,DPH ; High-Byte Daten in den A DISPOUT ; und ausgeben STATUS01 POP A ; Befehl vom Stack holen DISPOUT ; und ausgeben RET