您看看
CALL IN_BYTE
MOVF I_BYTE, W
MOVWF INDF
INCF FSR, F
DECFSZ N, F
GOTO READ_1
; done reading
DONE:
GOTO START1
IN_BYTE: ; returns byte in I_BYTE
MOVLW .8
MOVWF INDEX
CLRF I_BYTE
IN_BYTE_1:
BSF STATUS,RP0 ;强制为一
BCF TRISB,0
BCF STATUS,RP0
BCF STATUS,C
BCF PORTB,0;读前保持低电平
NOP
BSF PORTB,0
nop
nop
nop
BSF STATUS,RP0 ;强制为一
BSF TRISB,0
BCF STATUS,RP0
MOVF PORTB, W ; 7 usecs later, fetch from DATA_PIN
MOVWF TEMP
BTFSS TEMP, 0
BCF STATUS, C ; its a zero
BTFSC TEMP, 0
BSF STATUS, C ; its a one
RRF I_BYTE, F
MOVLW .4 ; now delay 40 usecs
CALL DELAY_10USEC
DECFSZ INDEX, F
GOTO IN_BYTE_1
MOVF I_BYTE, W ; return the result in W
BSF PORTB,0
RETURN
[/face][/size][/color][/color]
发表时间:2003年4月3日16:29:32