
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
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 |