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:
Er sieht ja dann den konstanten Wert als Adresse an und ließt den Inhalt aus dieser Adresse im Fileregister aus.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
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







Zitieren

Lesezeichen