.... Н Е П Р У Х А .... Руку помощи, плиз! Есть микруха PCF8574 (4 конфы назад уже спрашивал) - не цепляется падла! Бит ASC - говорит, что проц её не видит .... блин. Всё проверил - где ошибка ?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Клаус 03 мая 2004 г. 17:40

DATA_READ:

; PCF8574A READ PORT
; IN = R3 ADDRESS (00000XXXB)
; R2 = read_data

SETB read_SDA ;START CONDITION
SETB read_SCL
CALL I2C_DELAY
CLR read_SDA
CALL I2C_DELAY
CLR read_SCL

MOV R2,#0
MOV A,#0
RL A
ANL A,#00001110B
ORL A,#01110001B
CALL read_WRB
JB ERRORF,point0
CALL RDB
JB ERRORF,point2
MOV R2,A
jmp point1

point0: ;send ERROR to rs232
MOV SBUF,#'!'
CALL SEND_DATA
JMP POINT1

POINT2: MOV SBUF,#'?'
CALL SEND_DATA


point1: CLR read_SDA ;STOP CONDITION
SETB read_SCL
CALL I2C_DELAY
SETB read_SDA

;SEND DATA TO RS232
MOV SBUF,R2
CALL SEND_DATA

CPL CLOCK
JMP READ_PORT

RDB:
CPL CLOCK
CLR ERRORF
MOV counter_i2C,#8
RDB1: CALL read_HIGH
MOV C,read_SDA
RLC A
CALL read_LOW
DJNZ counter_I2C,RDB1

SETB read_SDA ;ACKNOWLEDGE BIT (1)
CALL read_HIGH
JB read_SDA,RDB2
SETB ERRORF
RDB2: CALL read_LOW
RET

read_WRB:
CPL CLOCK
CLR ERRORF ;CLEAR ERRORF FIRST
MOV counter_I2C,#8
WRB3: RLC A
MOV read_SDA,C
CALL read_HIGH ;CLOCK
CALL read_LOW
DJNZ counter_I2C,WRB3

SETB read_SDA ;ACKNOWLEDGE BIT
CALL read_HIGH
JNB read_SDA,WRB4
SETB ERRORF
WRB4: CALL read_LOW
RET


I2C_DELay:
NOP ;**** DELAY ****
NOP
CPL CLOCK
NOP
NOP
NOP
RET


read_HIGH:
SETB read_SCL ;**** SCL HIGH + DELAY ****
NOP
CPL CLOCK
NOP
NOP
NOP
NOP
RET

read_LOW:
CLR read_SCL ;**** SCL LOW + DELAY ****
NOP
CPL CLOCK
NOP
NOP
NOP
NOP
RET


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru