ja du hast ja recht! sorry....
nur manchmal verliert man etwas die geduld und die nerven..also
sorry..
ich kann ja mal den code hier posten und du schaust in dir mal an??
hoffe es ist nicht zu lang:
;*********************************************************
;Benjamin Moenius & Nadine Huebner************************
;*********************************************************
;
CMD equ 3000H ;Kommando-Register
DAT equ 3001H ;Daten-Register
GOTOH equ 30H
GOTOZ equ 31H
GOTOE equ 32H
ZIELH equ 33H
ZIELZ equ 34H
ZIELE equ 35H
STEPH equ 36H
STEPZ equ 37H
STEPE equ 38H
org 0 ;Reset
LJMP Haupt ;nach Reset
org 23H ;SINT
LJMP EMP ;weiter Interuptprogramm
org 100H ;Hauptprogramm
Haupt: MOV TMOD,#00100000B ;Timer 1 im Reload Mode
MOV TH1,#(-26) ;Nachladewert
MOV TL1,#(-26) ;Startwert
SETB TR1 ;Timer1 starten
MOV SCON,#01010000B ;Serielle Schnittstelle, 8bit UART
MOV IE,#10010000B ;Generelle + Serielle Interuptfreigabe
; ACALL INIT_DISPLAY_MODS
ACALL DISPLAY_INITIAL
ACALL DISPLAY_RESTART
SJMP $ ;Verweihlschleife am Ende
EMP:
MOV A,SBUF ;Zeichen aus SBUF holen
CLR RI ;Empfangsflag loeschen
CLR P1.7 ;Taste liefert beim Druck 0 an P1.7
JB P,SPEI ;Paritaet richtig, wenn P=1
RETI
SPEI: MOV R1,A ;Zeichen ins Register schreiben
; CJNE R1,#'i',LABEL_1
; ACALL
RETI ;Ruecksprung
DISPLAY_INITIAL:
MOV DPTR,#3000H ;Displayinitialisierung
MOV A, #30H ;8-Bit_Modus_initialisierung ohne Busy-Flag abfrage
movx @DPTR, A ;Indirekte Adressierung des externen Datenspeichers
LCALL WARTE_5MS ;5ms warten (Unterprogramm)
MOV A, #30H
movx @DPTR, A
ACALL WARTE_5MS
MOV A, #30H
movx @DPTR, A
ACALL WARTE_5MS
ACALL MARK
MOV A, #38H ;4-Zeilen Darstellung
movx @DPTR, A
ACALL MARK
mov A, #01H ;Display loeschen und Zeichenplatz 0 einstellen
movx @DPTR, A
ACALL MARK
mov A, #06H ;Autoinkrement, aktueller Zeichenplatz um 1 erhöht
movx @DPTR, A
ACALL MARK
mov A, #0FH ;Display aktiv und Cursor blinkt auf dem aktuellem
Zeichenplatz
movx @DPTR, A ; Ende Display-Initialisierung
ACALL WARTE_5MS
ret
SET_ADDR: ; Zeichenplatzadresse aktualisieren
ACALL MARK
mov DPTR, #CMD
setb 0E7H
movx @DPTR, A
ret
WARTE_5MS:
mov R2, #05H
ZEIT: mov R3, #250
DJNZ R3, $
DJNZ R2, ZEIT
RET
MARK:
push ACC
push DPL
push DPH
MOV DPTR, #3000H
WAIT_LCD:
MOVX A, @DPTR
JB ACC.7, WAIT_LCD
POP DPH
POP DPL
pop ACC
ret
;BUSY-Flag-Abfrage
BUSY: PUSH ACC ;Akku sichern
PUSH DPL ;Low-Byte des Datenpointers sichern
PUSH DPH ;High-Byte des Datenpointers sichern
MOV DPTR,#CMD ;Datenpointer zeigt auf Kommandoregister
MARK_1: MOVX A,@DPTR ;CMD in Akku
JB ACC.7,MARK_1 ;Warten, wenn BUSY-Flag gesetzt
POP DPH ;Datenpointer wiederherstellen
POP DPL
POP ACC ;Akku wiederherstellen
RET
INIT_DISPLAY_MODS:
mov GOTOH, #'-'
mov GOTOZ, #'-'
mov GOTOE, #'-'
mov ZIELH, #'0'
mov ZIELZ, #'0'
mov ZIELE, #'0'
;Prüfe falls Motor auf Null
mov STEPH, #'S'
mov STEPZ, #'Y'
mov STEPE, #'N'
ret
DISPLAY_RESTART:
CALL BUSY ;Zeichenplatzadresse:1.Zeile 1.Platz
MOV DPTR,#DAT
MOV A,#'G'
MOVX @DPTR,A
CALL BUSY
MOV A,#'O'
MOVX @DPTR,A
CALL BUSY
MOV A,#'T'
MOVX @DPTR,A
CALL BUSY
MOV A,#'O'
MOVX @DPTR,A
CALL BUSY
MOV A,#'='
MOVX @DPTR,A
CALL BUSY
MOV A,#' '
MOVX @DPTR,A
CALL BUSY
MOV A,#'-'
MOVX @DPTR,A
CALL BUSY
MOV A,#'-'
MOVX @DPTR,A
CALL BUSY
MOV A,#'-'
MOVX @DPTR,A
MOV DPTR,#CMD ;Zeichenplatzadresse:2.Zeile 1.Platz
CALL BUSY
MOV A,#0C0H
MOVX @DPTR,A
CALL BUSY
MOV DPTR,#DAT
MOV A,#'Z'
MOVX @DPTR,A
CALL BUSY
MOV A,#'I'
MOVX @DPTR,A
CALL BUSY
MOV A,#'E'
MOVX @DPTR,A
CALL BUSY
MOV A,#'L'
MOVX @DPTR,A
CALL BUSY
MOV A,#'='
MOVX @DPTR,A
CALL BUSY
MOV A,#' '
MOVX @DPTR,A
CALL BUSY
MOV A,#'0'
MOVX @DPTR,A
CALL BUSY
MOV A,#'0'
MOVX @DPTR,A
CALL BUSY
MOV A,#'0'
MOVX @DPTR,A
MOV DPTR,#CMD ;Zeichenplatzadresse:3.Zeile 1.Platz
CALL BUSY
MOV A,#94H
MOVX @DPTR,A
CALL BUSY
MOV DPTR,#DAT
MOV A,#'S'
MOVX @DPTR,A
CALL BUSY
MOV A,#'T'
MOVX @DPTR,A
CALL BUSY
MOV A,#'E'
MOVX @DPTR,A
CALL BUSY
MOV A,#'P'
MOVX @DPTR,A
CALL BUSY
MOV A,#'='
MOVX @DPTR,A
CALL BUSY
MOV A,#' '
MOVX @DPTR,A
CALL BUSY
MOV A,#'S'
MOVX @DPTR,A
CALL BUSY
MOV A,#'Y'
MOVX @DPTR,A
CALL BUSY
MOV A,#'N'
MOVX @DPTR,A
RET
end ;Ende der Assemblierung