;***********************************************************************
; Interrupt Routine für die Dsiplay Ausgabe
; es wird zwischen Daten und Befehlen unterschieden
; 2 Zeiliges Display a 16 Zeichen
; veränderte Register sind A und R0
;***********************************************************************

T0Int:			PUSH	ACC
			PUSH	B
			PUSH	psw
			
weiter1:		CLR	TR0				; Timer 0 Stop
			CLR	int
			JNB	befehl,daten1 ; oder Daten ?
					
			;**********   Befehle senden   *************
			CLR	befehl			; Befehl wird gesendet Flag aus
			MOV	A,befehlbyte		; Befehl holen
			SWAP	A				; Nibble tauschen
			ANL	A,#0Fh			; RS auf low
			MOV	p1,A				; Daten ausgeben 
			SETB	enable; Display aktivieren
			CLR	enable			; Display übernimmt Daten
			MOV	A,befehlbyte		; 
			ANL	A,#0Fh			; jetzt noch das Low Nibble
			MOV	p1,A
			SETB	enable; LCD aktivieren
			CLR	enable
Ende_ISR:		MOV	th0,#0E6h			; 
			MOV	tl0,#0CBh			; Timer 0 nachladen 7ms bei 11.059 MHz
			SETB	TR0				; Timer 0 Start
			;setb	zehnms
			POP	psw
			POP	B
			POP	ACC
			RETI
	;**********   Daten senden   ***************
daten1:                 djnz	zz,Zeile1		; SZ=Sz-1, schon 16 stelle		; SZ=Sz-1, schon 16 stelle
			JMP	Zeile2			; ja
Zeile1:			MOV	R0,sz				; Stellenzähler in R0
			MOV	A,@R0				; Wert für Display holen
			SWAP	A				; Nibble tauschen
			ANL	A,#0fh
			ORL	A,#10h			; RS auf high
			MOV	p1,A				; wert ausgeben
			SETB	enable			; LCD aktivieren
			CLR	enable			; Display übernimmt Daten
			MOV	A,@R0				;
			ANL	A,#0fh
			ORL	A,#10h			; jetzt noch Low Byte
			MOV	p1,A
			SETB	enable
			CLR	enable
			INC	sz
			JMP	Ende_ISR
			
Zeile2:		JB	zeile2,home			; schon 2 Zeilen ferig ?
			MOV	zz,#11h			; zeilenzähler rücksetzen
			MOV	befehlbyte,#0C0h		; Display Cursor an Anfang 2. Zeile
			SETB 	befehl			; Flag für Befehl setzen
			SETB	zeile2			; Flag für 2. Zeile setzen
			JMP	Ende_ISR

home:			MOV	zz,#11h			; Zeilenzähler rücksetzen
			CLR	zeile2			; Flag 2. Zeile löschen
			MOV	sz,#60h			; Stellenzähler rücksetzen
			MOV	befehlbyte,#80h
			SETB	befehl
			JMP	Ende_ISR