Hallo zusammen!
Ich programmiere erst seit kurzem in Assembler und habe Schwierigkeiten, eine Select Case Struktur zu programmieren. Ich muss dazu sagen, dass ich Assembler im Bascom-Editor programmiere, hoffe jedoch, dass dies keinen Unterschied macht. Hier mal meine Main:
Code:
Main:
'Daten vom USB-Device abholen, wenn welche bereitstehen
sbis Pinb, Rxf 'if RXF=1 then Jump to Main
rjmp Main 'Sprung zu Main, falls keine neuen Daten vorhanden
'das empfangene Kommando abrufen. Vorher alle Pins von Portd auf
'Eingang setzen
clr t0
!Out Ddrd , t0 'Alle Pins auf Eingang
rcall Usb_get_byte 'Byte in t0 speichern
'je nach Kommando die jeweilige Unterroutine aufrufen
cpi t0, cmd_position
brne Label_1
rcall Usb_send_position
jmp Main
Label_1:
cpi t0, cmd_setcoordinates
brne Label_2
rcall Usb_get_position
ser t0
!Out Ddrd , t0 'Alle Pins auf Ausgang
ldi t0, ok
rcall usb_send_byte
jmp Main
Label_2:
jmp Main
Der Code funktioniert nur ein einziges Mal nach dem Flashen. Die einzelnen Routinen "Get_Position", "Get_Byte" und "SetCoordinates" funktionieren fehlerfrei.
Was mache ich falsch?
Vielen Dank im Voraus!
Ruppi
Lesezeichen