Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Servo per ASM mit CC steuern Kategorie: Programmierung ASM (von Kay - 7.02.2005 17:53)
 Als Antwort auf Re: Servo per ASM mit CC steuern von FlyingMatze - 7.02.2005 10:48
deine assemblerroutine scheint nicht so optimal.
so wie ich das sehe, brauchst du sie nur als
"kürzeren pausenbefehl". demnach kannst du dir
das setzen und löschen der ports sparen, das kannste
in basic machen und bist dabei noch flexibel. es reicht
also eine einfach herunterzählschleife in der form:

 org $101
           lda #255    ;255 -> Akku
_deca      deca        ;decrementiere Akku
           bne  _deca  ;mach das nochmal, wenn akku nicht 0 (Z-Flag an CCR)
           rts         ;zurueck ins system

die ist so in knapp 800 µs fertig. zusammen mit dem aufruf
durch sys und den basic-befehlen zum setzen/löschen der
ports kommst du so ziemlich auf deine millisekunde.
du kannst auch eins machen: den schleifenstartwert beim aufruf
von sys als parameter mitgeben, und so feintuning betreiben.
das geht mit:

 org $101
           lda $92     ;low-byte des top of stack -> Akku
_deca      deca        ;decrementiere Akku
           bne  _deca  ;mach das nochmal, wenn akku nicht 0 (Z-Flag an CCR)
           rts         ;zurueck ins system

mit sys &h101,255 ist die maximale dauer der schleife garantiert, ist sie zu lang,
einfach nen kleineren wert mitgeben. ist die schleifendauer trotz 255 noch zu kurz,
dann muss eine leeroperation eingefügt werden:

 org $101
           lda $92     ;low-byte des top of stack -> Akku
_deca      deca        ;decrementiere Akku
           nop
           bne  _deca  ;mach das nochmal, wenn akku nicht 0 (Z-Flag an CCR)
           rts         ;zurueck ins system

allerdings müssen dann entsprechend niedrigere schleifenstartwerte
mit übergeben werden.
einmal übertragene s19-dateien im basic-programm auskommentieren!
das schont den eeprom des kontrollers und beschleunigt das übertragen
von programmen allgemein.

 Antwort schreiben

Bisherige Antworten: