Tratto da
questo listato per PIC a 8MHz. CH e CL sono due generici registri a 8 bit, PCMCH3 e' l'alias di un pin di ingresso collegato ad un canale della ricevente. Alla fine in W abbiamo un valore pari a 128 con stick al centro e via via +/-4µS per ogni unita' in piu' o in meno.
Codice:
;-----------------------------------------------------------------------
; Misura ingresso PPM CANALE 3
; Risoluzione 4uS, conteggio 16 bit in CH:CL
;-----------------------------------------------------------------------
PPM_CH3 CLRF CL ;azzera conteggio
CLRF CH
BTFSS PPMCH3 ;attende impulso
GOTO $-1
INCF CL,F
BTFSS STATUS,Z
GOTO $+2
INCF CH,F
NOP
BTFSC PPMCH3
GOTO $-6
CALL NORMCHCL
RETURN
;-----------------------------------------------------------------------
; Normalizzazione conteggio 16 bit in valore 8 bit,
; il risultato e' ritornato in W.
; <988uS = 0
; 1,0mS = 250 +/-1 -247 = 3 +/-1
; 1,5mS = 375 +/-1 -247 = 128 +/-1
; 2,0mS = 500 +/-1 -247 = 253 +/-1
; >2,008mS = 255
;
; CH:CL = CH:CL - 247
; IF (CH < 0) THEN RESULT = 0
; ELSE IF (CH = 0) THEN RESULT = CL
; ELSE RESULT = 255
;-----------------------------------------------------------------------
NORMCHCL MOVLW 247
SUBWF CL,F
BTFSS STATUS,C
DECF CH,F
BTFSC CH,7
RETLW 0
MOVF CH,F
BTFSS STATUS,Z
RETLW 255
MOVF CL,W
RETURN