[an error occurred while processing this directive]
|
где проьлема не пойму. Вот код.
И вообще хотел бы знать, насколько PCF8574 надёжны.
DATA_WRITE:
; PCF8574 WRITE PORT
; IN = R3 ADDRESS (00000XXXB)
; R1 DATA
; OUT = ERRORF 0=OK 1=ERROR
cpl clock
IPW:
SETB write_SDA ;START CONDITION
SETB write_SCL
CLR write_SDA
CALL I2C_delay
CLR write_SCL
SETB write_SDA
cpl clock
MOV A,R3
RL A
ANL A,#00001110B
ORL A,#01000000B ;ORL A,#01110001B
CALL WRB
JB ERRORF,IPW8
MOV A,r1
CALL WRB
jmp ipw9
IPW8: ;Send ERROR to RS232
MOV SBUF,#'!'
CALL SEND_DATA
IPW9: CLR write_SDA ;STOP CONDITION
SETB write_SCL
CALL I2C_DELAY
SETB write_SDA
MOV SBUF,#'+'
CALL SEND_DATA
CPL CLOCK
ret
;---------------------------------------------------------
WRB:
CPL CLOCK
CLR ERRORF ;CLEAR ERRORF FIRST
MOV counter_I2C,#8
WRB1: RLC A
MOV write_SDA,C
CALL write_HIGH ;CLOCK
CALL write_LOW
DJNZ counter_I2C,WRB1
SETB write_SDA ;ACKNOWLEDGE BIT
CALL write_HIGH
JNB write_SDA,WRB2
SETB ERRORF
WRB2: CALL write_LOW
RET
;------------------------------------------------------------------------------------------------
;___________________________________________ I2C PROCEDURE _______________________________________________
write_HIGH:
SETB write_SCL ;**** SCL HIGH + DELAY ****
NOP
CPL CLOCK
NOP
NOP
NOP
NOP
RET
write_LOW:
CLR write_SCL ;**** SCL LOW + DELAY ****
NOP
CPL CLOCK
NOP
NOP
NOP
NOP
RET
I2C_DELay:
NOP ;**** DELAY ****
NOP
CPL CLOCK
NOP
NOP
NOP
RET
;_________________________________________________________________________________________________________
;-------------------------------------------------------------------------
SEND_DATA:
;-------------------------------------------------------------------------
send1: cpl clock ;
JNB TI, send1 ;
CLR TI ;
RET ;
END
E-mail: info@telesys.ru