Liebe Gemeinde,
bei meinem immernoch ersten Controllerprojekt habe ich ein mittleres Problem bei der Einbindung von Assemblercode mittels Bascom. Für eine Routine die mit 250kBaud über die Serielle sendet (DMX), möchte ich gerne zum zwecke der performance asm benutzen und selbiges in Bascom aufrufen (mit letzterem einfach die Bytes zur verfügung stellen). Ich habe eine Lib gebaut, habe aber probleme beim compilieren, die vermutlich an Sprungzielen hängt:
lib: [send_dmx_byte] Send_dmx_byte : Sbi Ucsrb , 0 'Set 9th Bit (Stoppbit 1) Out Udr , Dmx_byte 'Byte must be in DMX_BYTE-Register nop Wait_sending : Sbis Ucsra , 6 'Wait until Byte is sent rjmp WAIT_SENDING sbi UCSRA,6 'Clear TX Complete Flag by writing a 1 ret [end]
--------------------------- Ergebnis: [send_dmx_byte] Send_dmx_byte : Sbi Ucsrb , 0 'Set 9th Bit (Stoppbit 1) .OBJ BF2F .OBJ 0 Wait_sending : Sbis Ucsra , 6 'Wait until Byte is sent rjmp WAIT_SENDING .OBJ 9AFE .OBJ 9508 [end]
die Fehlermeldungen deuten auch darauf hin das irgendwas mit den Sprungzielen nicht stimmt, werden offensichtlich auch nicht compiliert(?). Wie müsste ich korrekterweise ein Sprungziel, das keine einzelne Routine ist, notieren? Kann man auch sagen 'gehe 3 Befehle zurück'? Und ja, der Code ist natürlich abgeschrieben und umgenutzt ;o))
Hat vielleicht jemand einen Tipp für mich? So langsam scheint es kompliziert zu werden bei mir ;o)))
Danke euch vielmals, bye uwe