PicNick,
Zitat Zitat von PicNick Beitrag anzeigen
Zur Info, wer's nicht weiss: Bascom adressiert indizierte Tabellen so: er lädt
Tabellenanfangsadresse - elementlänge
dadurch braucht er den index nicht um 1 zu verringern.
Ja, ist bekannt. Und was hat das mit Deinem Code zu tun ?
Wenn man mal den original Bascom-Code ansieht:
Code:
Isr_int0:
If Channel > 0 And Channel < 6 Then
  Empf(channel) = Timer0
End If
Timer0 = 6
Incr Channel
Return
dann wird dort channel 1..5 verwendet, Dein ASM-Code verwendet dagegen channel 0..4. Das würde nur funktionieren, wenn channel nur eine innerhalb der ISR verwendete Variable wäre und vom restlichen Code nicht angesprochen wird. Das ist aber bereits aus dem Code hervorgehend sehr unwahrscheinlich, denn pro Aufruf der Int0-ISR wird channel um 1 hochgezählt. Was ist dann bei channel = 5 ? Hört dann alles auf, oder muss channel erst überlaufen ?

Also wird channel sehr wahrscheinlich woanders im Code auch verwendet und wenn dem so ist, müssten alle entsprechenden Stellen auf channel 0..4 umgestellt werden.
Das macht man doch nicht so, da ist's doch einfacher der ASM-Code bildet channel 1..5 nach, auch wenn's 'nen Takt mehr kostet.

@Chris,

wo kommt eigentlich das Hochzählen von channel her ? Ist im Bascom-Code nicht zu entdecken.