Ah danke!
Am CALL dürfte es dann aber allerding nicht liegen, da ich 1. nicht so viel Befehle habe und 2. mein PIC nur max 1024 Befehle aufnehmen kann.
Hier is mal der Code:
UP_Show_btns wird nicht aufgerufen!
Ich vermute es liegt an der Tabelle tab_Joy, hab aber anstatt der Register auch schon konstante Werte in die Tabelle geschrieben... trotzdem Fehlanzeige.
Code:
main
BSF a_ATT ; ATT auf HIGH, Controller wird abgewählt
; (ignoriert alle Daten)
CALL UP_wait_25us
BSF a_CLOCK ; Clock HIGH
BSF a_COMMAND ; Command HIGH
BCF a_ATT ; ATT auf LOW das der Controller
; die Daten annimmt
CALL UP_wait_50us ; Warteschlange bis Controller bereit ist
CALL UP_Start ;Senden: H'01' Startbefehl
CALL UP_Get_Type ;Senden: H'42' Datenanfrage
;------------------------------------
;Empfangen: H'41'=Digital
;ODER H'23'=NegCon
;ODER H'73'=Analogue Red LED
;ODER H'53'=Analogue Green LED
CALL UP_Get_Status ;Empfangen: H'5A' - Status:READY
;------------------------------------
;Senden: H'00' - Idle-Modus
CALL UP_Get_L_btns ;Empfangen: H'xx' - Status der linken Btns
;------------------------------------
;Senden: H'00' - Idle-Modus
CALL UP_Get_R_btns ;Empfangen: H'xx' - Status der rechten Btns
;------------------------------------
;Senden: H'00' - Idle-Modus
CALL UP_Get_R_Joy_X ;Empfangen: H'xx' - rechtes Joystick, X-Achse
;------------------------------------
;Senden: H'00' - Idle-Modus
CALL UP_Get_R_Joy_Y ;Empfangen: H'xx' - rechtes Joystick, Y-Achse
;------------------------------------
;Senden: H'00' - Idle-Modus
CALL UP_Get_L_Joy_X ;Empfangen: H'xx' - linkes Joystick, X-Achse
;------------------------------------
;Senden: H'00' - Idle-Modus
CALL UP_Get_L_Joy_Y ;Empfangen: H'xx' - linkes Joystick, Y-Achse
;------------------------------------
;Senden: H'00' - Idle-Modus
CALL UP_Show_btns ;Ausgabe der gXXXX (g=> GET) Register
GOTO main ;Springe wieder an den Anfang zurück
Code:
;###############################################################################
UP_Show_btns
MOVLW D'1'
MOVWF zaehler ;Zaehler auf 1 setzten
Show_1 CLRF PORTB ;PORTB (Anzeige löschen)
MOVF zaehler,W ;Zaehler ins Wreg. um mit PCL zu addieren
CALL tab_Joy ;Wert aus Tabelle...
MOVWF PORTB ;... an PORTB anzeigen...
CALL UP_wait_05s ;...(eine halbe Sekunde)
INCF zaehler ;Zaehler erhöhen (+1)
MOVLW D'5' ;Zaehler mit der Zahl 5
SUBWF zaehler,W ;subtrahieren (Ergebnis ins Wreg.) um
BTFSC STATUS,C ;Zaehler auf 5 zu prüfen
RETURN ;<--- Zaehler = 5
GOTO Show_1 ;<--- Zaehler < 5
;###############################################################################
Code:
;######################### L/R Joystick Tabelle ##########################
tab_Joy ;zaehler maximal bis 5
ADDWF PCL,F ; Anzeigen der Position des
DT gRJoyX,gRJoyY ; des rechten [x-Achse,y-Achse]...
DT gLJoyX,gLJoyY ; und linken [x-Achse,y-Achse] Joysticks
Achso ja.... wenn ich keine Tabellen in meinem Programm habe und UP_Show_btns aus "Spagetti-Code" besteht... funktioniert es!
Code:
UP_Show_btns
;Ausgabe der Register in denen der Status und die einzelnen Zustände der Buttons stehen
CLRF PORTB
BSF PORTB,0 ;Register LED (STATUS) [DEBUGGING]
CALL UP_wait_05s
CLRF PORTB
;#########
MOVFW gSTATUS ;Status Register
MOVWF PORTB ;an PORTB anzeigen
CALL UP_wait_05s
;##################
CLRF PORTB
BSF PORTB,1 ;Register LED (LINKS) [DEBUGGING]
CALL UP_wait_05s
CLRF PORTB
;#########
MOVFW gLEFT ;LINKS Register
MOVWF PORTB ;an PORTB anzeigen
CALL UP_wait_05s
;##################
CLRF PORTB
BSF PORTB,2 ;Register LED (RECHTS) [DEBUGGING]
CALL UP_wait_05s
CLRF PORTB
;#########
MOVFW gRIGHT ;RIGHT Register
MOVWF PORTB ;an PORTB anzeigen
CALL UP_wait_05s
;##################
CLRF PORTB
BSF PORTB,3 ;Register LED (rechtes Joxstick x-Achse) [DEBUGGING]
CALL UP_wait_05s
CLRF PORTB
;#########
MOVFW gRJoyX ;RJoyX Register
MOVWF PORTB ;an PORTB anzeigen
CALL UP_wait_05s
;##################
CLRF PORTB
BSF PORTB,4 ;Register LED (rechtes Joxstick y-Achse) [DEBUGGING]
CALL UP_wait_05s
CLRF PORTB
;#########
MOVFW gRJoyY ;RJoyY Register
MOVWF PORTB ;an PORTB anzeigen
CALL UP_wait_05s
;##################
CLRF PORTB
BSF PORTB,5 ;Register LED (linkes Joxstick x-Achse) [DEBUGGING]
CALL UP_wait_05s
CLRF PORTB
;#########
MOVFW gLJoyX ;LJoyX Register
MOVWF PORTB ;an PORTB anzeigen
CALL UP_wait_05s
;##################
CLRF PORTB
BSF PORTB,6 ;Register LED (linkes Joxstick x-Achse) [DEBUGGING]
CALL UP_wait_05s
CLRF PORTB
;#########
MOVFW gLJoyY ;LJoyY Register
MOVWF PORTB ;an PORTB anzeigen
CALL UP_wait_05s
RETURN
Lesezeichen