Hallo,

@genus(n) wird bereits von Bascom nach $crystal berechnet und sorgt in diesem Fall für 9 µS Wartezeit, wir können das also unverändert übernehmen. Die restliche µS muss noch beackert werden. Bei den für 8 Mhz benötigten zusätzlichen 70 Takten kannst Du natürlich 70 NOPs einfügen, wäre aber nicht sonderlich elegant . Also nehmen wir eine Schleife.

Der entsprechende Teil der MCS.LIB sieht dann so aus:
Code:
; MCS.LIB ANPASSUNG ------------------------------------------------------------

; FÜR 8 MHZ

_pulse_in5:
  @genus(9)                          ; Sorgt für 9 µS Wartezeit und wird
                                     ; von Bascom nach $Crystal berechnet

; Warteschleife für die restliche µS  (insgesamt 80 Takte)
 push r17                            ; 2 Zyklen

          ldi  R17, $16               ; warte 66 Zyklen
warte0:
   dec  R17
   brne warte0
 pop r17                              ; 2 Zyklen

  Ld r0,z                             ; 2 cycl. get pin state
  And r0, r24                         ; 1 cycl. get only the input pin state
  Eor r0,r16                          ; 1 cycl. xor with begin state
  Brne _pulse_in_exit                 ; 2 cycl. ready ,state changed
  Adiw xl,1                           ; 2 cycl. counter
  brne _pulse_in5                     ; 2 cycl. again
;-------------------------------------------------------------------------------
Nach der Änderung noch von Bascom die Lib in die .lbx kompilieren lassen... fertig.

Grüße
Henrik