Hallo, ich habe ein mehr oder weniger großes Problem.

Ich bin dabei ein GLCD (mit T6963C) anzusteuern. Dazu verwende ich den oben genannten PIC, da es ein CAN Teilnehmer sein soll. Die Steuerleitungen sind an Port C angeschlossen und die Datenleitungen (D0...D7) sind nun RD0...RD7

um etwas zum display zu senden muss ich vorher den status abfragen. nun schon mein problem. hier mal alle benötigten auszüge aus meinem Quelltext:

Code:
	LIST P=18F4685		;directive to define processor
	#include <P18F4685.INC>	;processor specific variable definitions

;******************************************************************************
;Configuration bits

;   Oscillator Selection:
    CONFIG	OSC=IRCIO7            ;intern
	CONFIG  WDT=OFF               ;no Watchdog
	CONFIG  CP0=OFF               ;code protect off
	CONFIG  PBADEN=OFF            ;Port A as I/O
	CONFIG  LVP=OFF               ;low voltage programming

;******************************************************************************
;Variable definitions

		CBLOCK	0x080
		WREG_TEMP	;variable used for context saving 
		STATUS_TEMP	;variable used for context saving
		BSR_TEMP	;variable used for context saving
		ENDC

		CBLOCK	0x000
		EXAMPLE		;example of a variable in access RAM
		ENDC
		
	UDATA_ACS
	
r24     RES 1		;8bit zwischenspeicher
r25   	RES 1		;8bit zwischenspeicher
r20   	RES 1		;8bit zwischenspeicher
r21   	RES 1		;8bit zwischenspeicher
r30   	RES 1		;8bit zwischenspeicher
r31   	RES 1		;8bit zwischenspeicher
Frage 1: ist das mit den Variablendeklarationen so richtig? (RES1)

Code:
Init:
	bsf		RCON, IPEN
	bsf		INTCON, GIEH
	bsf		INTCON, GIEL
	movlw	0x70		; maximale interne Frequenz 8MHz setzen
	movwf	OSCCON	
	clrf 	WREG		; Akkumulator loeschen
	movwf 	TRISD		; PortD als Ausgang definieren	
	movwf 	TRISC		; PortC als Ausgang definieren	
	movwf 	TRISB		; PortB als Ausgang definieren	
	
	rcall Set_Display

	rcall Clear_Text

Main:	
;	*** main code goes here ***
	ORG 	0x0100

	rcall Init			;Initialisieren

................................
Hier die eigentlich wichtige Funktion, sie wird von Set_Display aufgerufen:

Code:
Gstatus_check:
  bsf PORTC,4         ; command
  movlw 0xFF          ; make port an input
  movwf TRISD

Gstatus_check1:
  bcf PORTC,2         ; RD low
;*#IF _XTAL>12000000
  nop
  nop
;*#ENDIF
  bcf PORTC,3         ; Enable Chip
  nop
  nop
  nop
;*#IF _XTAL>12000000
  nop
  nop
  nop
;*#ENDIF
+++++++++++++++++++++++++++++++++++++
  movf PORTD,0           ; get status
  movwf PORTB
  movwf r25
+++++++++++++++++++++++++++++++++++++
;*#IF _XTAL>12000000
   nop
   nop
;*#ENDIF
  bsf PORTC,2         ; end RD
;*#IF _XTAL>12000000
   nop
   nop
;*#ENDIF
  bsf PORTC,3         ; disable chip
  movlw 0x03
  andwf r25,1                     ; Mask Bits
  CPFSEQ r25
  ;*#IF _SIM=0
  bra Gstatus_check1              ; not ready
;*#ENDIF
  clrf WREG				      ; Akkumulator loeschen
  clrf TRISD                     ; make output port
   
 return
in dem Teil zwischen den "+++" geht es um das eigentliche Problem. Ich messe an RD0 und RD1 5V, aber an RB0 liegt keine Spannung an. Demzufolge hat auch "r25" den Inhalt 0x00 und die Statusabfrage läuft immer in Endlosschleife. Obwohl die richtigen Signale anliegen, es muss an der Pinabfrage liegen. Ich bin der Meinung ich habe an alles gedacht (TRISD auf FF, PORTD in WREG). Aber irgendwo muss ja ein fehler sein. Kann mir jemand helfen?