So ich bins mal wieder,
hab mir die indirekte Adressierung angeschaut und hab noch eine Frage dazu.

Wenn ich in der "dynamischen Tabelle" neben Fileregistern auch konstante Werte ins Workregister schreibe, kommt es dann zu Problemen wenn ich die Senderoutine nehme:

Code:
UP_MAX_send_tabelle
	
	MOVLW	D'1'
	MOVWF	zaehler_tab
	
MAX_st1	MOVLW	D'8'
	MOVWF	zaehler_bit
	
	CALL	tab_MAX		;Öffnet die "dynamische Tabelle"
				;Im Workregister steht jetzt die Adresse
    				;des Registers dessen Inhalt Übertragen werden soll
			     	
	MOVWF	FSR		;der Zeiger zeigt jetzt auf das Register
				;dessen Inhalt Übertragen werden soll
				
	MOVFW	INDF		;mit dem virtuellen Register INDF kann der
				;Inhalt des Registers ausgegeben werden,
    				;auf das der Zeiger FSR zeigt
	MOVWF	sMAX
	
	BCF	a_MAX_LOAD	;Vor der Übertragung von 2 Bytes auf LOW
	
	
MAX_st2	RLF	sMAX		;MSB zuerst...
	BTFSC	STATUS,C
	GOTO	MAX_send_tabelle_1	;MAX-Datenleitung auf HIGH	(Übertrage 1)
	BCF	a_MAX_DATA		;MAX-Datenleitung auf LOW	(Übertrage 0)	
	
MAX_st3	BCF	a_MAX_CLOCK	;
	;CALL	UP_wait_05s	; #############DEBUGGING#############
	BSF	a_MAX_CLOCK	;Positive Flanke erzeugen
	BCF	a_MAX_CLOCK
	
	DECF	zaehler_bit
	MOVF	zaehler_bit,F	; Zähler ...
	BTFSS	STATUS,Z		; ... auf 0 prüfen,
	GOTO	MAX_st1		; <-- Zähler != 0
	BTFSS	zaehler_tab,0	; <-- Zähler == 0
	BSF	a_MAX_LOAD	; <-- Zähler_tab == gerade
				; <-- Zähler_tab == ungerade
	INCF	zaehler_tab
	MOVLW	D'22'
	SUBWF	zaehler_tab,W
	BTFSS	STATUS,Z		
	GOTO	MAX_st1		;zaehler_tab < 22
	RETURN			;zaehler_tab = 22
	
MAX_send_tabelle_1
	BSF	a_MAX_DATA
	GOTO	MAX_st3
Er sieht ja dann den konstanten Wert als Adresse an und ließt den Inhalt aus dieser Adresse im Fileregister aus.
Also müsst ich alle konstanten Werte die ich in der Tabelle hab im Fileregister anlegen und in der Initialisierung mit den vorgesehenen Werten belegen.

Ich hab dieses Unterprogramm geschrieben um an dem MAX-7219 die gewünschten Register anzeigen zu lassen. Da aber die Initialisierung und die Adressen der einzelnen Digits immer gleich ist, hat ich für diese Bytes Konstanten vorgesehen.

...Aber das is ja kein Thema wenn ich mit der Senderoutine keine konstanten Werte mehr übertragen kann. Dann mach ich es einfach wie oben beschrieben....

Edit: Kommentierung im Quellcode