Endlich habe ich alles in den Griff bekommen!

Habe nun alle "Bugs" gefunden und bin nun in der Lage Zeichen auf dem LCD anzeigen zu lassen. Nach Tagen...

Hier der neue CODE:
Code:
	list p=16f84a

;*******************************************************************************
;*		PIN Belegung
;*
;*	PORTA:	0	-	RS
;*			1	-	RW
;*			2	-	E1
;*			3	-	TEST LED
;*
;*	PORTB:	0..7 - D0..D7
;*
;*******************************************************************************
;*******************************************************************************

	#include <p16f84a.inc>


;*******************************************************************************
;*		Config

	__CONFIG	_PWRTE_ON & _WDT_OFF & _XT_OSC



;******************************************************************************
;		Variablen

count	equ		0x20
time	equ		0x21
confg	equ		0x22
daten	equ		0x23
flag	equ		0x24

;		Konstanten

#define		RS	PORTA, 0
#define		RW	PORTA, 1
#define		E1	PORTA, 2
#define		LED	PORTA, 3



;_____________________________________________________________________________
;*****************************************************************************
;		PROGRAMM START



;**************************
;* 	PIC Initialisierung	  *
;**************************

Init
	bsf     STATUS, RP0				; Bank 1
	movlw	B'00000000'				; RA0 ..RA4 outputs
	movwf	TRISA					; 
	movlw	B'00000000'				; PortB alle outputs 
	movwf	TRISB
	bcf     STATUS, RP0				; Bank 0
	clrf	PORTA		
	clrf	PORTB		
				
 
	
;**************************
;*  LCD Initialisierung	  *
;**************************


InitLCD
	movlw	D'255'					; 250 ms Pause nach dem Einschalten
	movwf	time	
	call	w_ms		

	movlw	B'00110000'				
	movwf	PORTB
	bsf		E1
	nop	
	bcf		E1
	
	movlw	.5						; 5 ms Pause
	movwf	time
	call	w_ms
	movlw	B'00110000'				
	movwf	PORTB
	bsf		E1
	nop	
	bcf		E1
	movlw	.20						; 100 mikro sekunden warten
	movwf	time
	call	w_us
	movlw	B'00110000'				
	movwf	PORTB
	bsf		E1
	nop	
	bcf		E1
	
	movlw	B'00110000'				; function set, 8-bit  2-zeilig,  5x7
	call	Lcd_set	
	movlw	B'00001000'				; off
	call	Lcd_set
	movlw	B'00000110'				; entry mode, increment,  cursr shift
	call	Lcd_set
	movlw	B'00000011'				; cursor home
	call	Lcd_set
	movlw	B'00001111'				; on
	call	Lcd_set
;**********************************************
;*	  Zeichen Test   	  					  *
;*											  *
;*    	(test)!!							  *
;**********************************************


		bsf 	LED
		call	w_ms
		bcf		LED
	

		movlw	'1'
		movwf	daten
		call	wrte
	
		bsf 	LED
		bcf		LED

		movlw	'2'
		movwf	daten
		call	wrte
		

		bsf 	LED
		bcf		LED

		movlw	'3'
		movwf	daten
		call	wrte
		

		bsf 	LED
		bcf		LED
	
		movlw	'4'
		movwf	daten
		call	wrte
		
		bsf 	LED
		bcf		LED
		
		movlw	'5'
		movwf	daten
		call	wrte
		
		bsf 	LED
		bcf		LED

noend	
		goto	noend
;************************************
;*	LCD Config	 (write)            *
;*		Steuerbefehle ausführen	    *
;************************************

Lcd_set							; OK
	movwf	confg
	call	BusyFlag			; !! RS RW = 0 zu dem Zeitpunkt !!
	movf	confg, w
	movwf	PORTB				; Daten schreiben
	bsf		E1
	nop
	bcf		E1					; Disable LcdBus
	return
;***********************************
;*	LCD Ausgabe			           * 
;*		Zeichen ausgeben           *
;***********************************


wrte
	bsf		LED					; Test LED on
	movwf	daten
	call	BusyFlag
	movf	daten, w
	movwf	PORTB				; Daten schreiben
	bsf		RS					; Daten
	bsf		E1					; Enable LcdBus
	nop
	bcf		E1					; Disable LcdBus	
	bcf		RS					;
	bcf		LED					; Test LED off
	return
;**************************
;*	CHCK BusyFlag		  *
;**************************

BusyFlag
	bsf		LED					; Test LED on
    bsf    	STATUS, RP0			; make Port B0..7 input
	movlw	B'11111111'
	movwf  	TRISB 
    bcf    	STATUS, RP0

BusyLoop		
	bcf		RS
	bsf		RW					; LESEN
	bsf		E1
	nop
	movf	PORTB, w
	movwf	flag
	bcf		E1
	nop
	bsf		E1					; Enable
	nop
	bcf		E1
	btfsc	flag, 7		; teste bit 7
	goto	BusyLoop
	bcf		RW
    bsf     STATUS, RP0			; make Port B4..7 output
	movlw	B'00000000'
	andwf   TRISB, f    
    bcf     STATUS, RP0
	bcf		LED					; Test LED off
	return	
;*************************
;*	Warteschleife	µs	 *
;*************************

w_us

loop	nop
		nop
		decfsz		time, f
		goto		loop
		return
;*************************
;*	Warteschleife	ms	 *
;*************************

w_ms

		movlw		.112
		movwf		count

loop_ms	nop
		nop
		nop
		nop
		nop
		nop
		decfsz		count, f
		goto		loop_ms

		decfsz		time, f
		goto		w_ms
		return



	
	end
falls es jemandem irgendwie weiterhelfen sollte...

Gruß

Lukas