DL2
CLRWDT ; [1] RESET WATCHDOG TIMER
GOTO $+1 ; [2] WASTE TIME
GOTO $+1 ; [2] WASTE TIME
DECFSZ CNT2,1 ; [1]
GOTO DL2 ; [2] CNT0 X 8 us [ CNT0 x Te ]
SAMPLE2
BCF FLAGS,BITIN ; [1] CLEAR BIT POSITION
BTFSS PORTA,RFIN ; [1.5] LEAVE 0 IF LINE HIGH
BSF FLAGS,BITIN ; [0.5] MAKE 1 IF LINE LOW
; SUB TOTAL = 3 CYCLES
CALL ROT_SHIFT ; [11]+[2] CSR SHIFT + CALL
BCF CSR7,7 ; [1]
BTFSC FLAGS,BITIN ; [1.5]
BSF CSR7,7 ; [0.5]
; SUB TOTAL = 16 CYCLES
MOV F CNT0,W ; [1] CALIBRATION COUNTER
MOV WF CNT2 ; [1] (NOMINALLY 75 FOR 300 us PULSE)
MOV LW 3 ; [1] SEE CALCULATION BELOW
SUBWF CNT2,1 ; [1]
NOP ; [1]
; SUB TOTAL = 5 CYCLE
; TOTAL = 24 => 24/8 = 3 LOOP COUNTERS
;*************************************************************************
; TOTAL = 24 INSTRUCTIONS
; SUBTRACT 24/8 = 3 TO COMPESATE FOR UPDATEING CSR AND OTHER PROCESSING
; AFTER DATA SAMPLE IS TAKEN.
;*************************************************************************
DL3
GOTO $+1 ; [2] WASTE TIME
GOTO $+1 ; [2] WASTE TIME
CLRWDT ; [1] RESET WATCHDOG TIMER
DECFSZ CNT2,1 ; [1]
GOTO DL3 ; [2] CNT0 X 8 us [ CNT0 X Te ]
SAMPLE3
BTFSC PORTA,RFIN ; [2] INPUT LOW? THIRD SAMPLE
GOTO RMT0 ; [0] NO--RECEIVE ERROR
CALL TST_RTCC ; [11] CHECK RTCC
DECFSZ CNT1,1 ; [1] LAST BIT?
GOTO RCV8 ; [2] ... NO, GET NEXT BIT
GOTO RMT1 ; TOTAL = 14 CYCLES
RMT_0
RMT0
RMT01 BSF STATUS,C ; INVALID TRANSMISSION
RETLW 1 ; RETURN
RMT1 BSF PORTA,LED ; VALID TRANSMISSION FORMAT, LED ON
MOV LW 0FH ; FORCE OPEN BUTTON CODES TO ZERO
ANDWF SER_0,1
CLRC ; VALID SERIAL NUMBER => VALID TX
RETLW 0 ; RETURN
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] 下一页
本文关键字:源程序 PIC单片机,单片机-工控设备 - PIC单片机