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
Lesezeichen