[an error occurred while processing this directive]
Помогите считать данные с PCF8574....а то мозги уже кипят. Записать могу, а вот с чтением траблы ...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Василий Н. 26 августа 2005 г. 17:05

;* Title : IR-processor
;* Version : 1.00
;* Target : ATmega16
;* Author : Nikolaev V.


.include "m16def.inc"


.macro I2C_START

CBI PortC,0 ;SCL
I2C_delay
SBI PortC,1 ;SDA
I2C_delay
SBI PortC,0 ;SCL
I2C_DELAY
CBI PortC,1 ;SDA
I2C_DELAY
CBI PortC,0 ;SCL
I2C_DELAY
.endm

.macro I2C_STOP

CBI PortC,0 ;SCL
I2C_delay
CBI PortC,1 ;SDA
I2C_DELAY
SBI PortC,0 ;SCL
I2C_DELAY
SBI PortC,1 ;SDA
I2C_DELAY
.endm ;


.macro I2C_SEND_BYTE

LDI TEMP2,$00
LDI TEMP3,$08
SB1:
SBRC BUFFER1,7
JMP SB2
CBI PortC,1 ;SDA
JMP SB3
SB2:
SBI PortC,1 ;SDA
SB3:

ROL BUFFER1
I2C_DELAY
SBI PortC,0 ;SCL
I2C_DELAY
CBI PortC,0 ;SCL
I2C_DELAY
DEC TEMP3
CP TEMP2,TEMP3
BREQ SB4
jmp SB1
SB4:
I2C_delay
.endm


.macro I2C_READ_BYTE
LDI TEMP2,$00
LDI TEMP3,$08
I2C_DELAY
SR1:
SBI PortC,0 ;SCL
I2C_DELAY

SBR BUFFER4,0

sbic PinC,1 ;SDA
jmp SR2
cbr BUFFER4,0

SR2:
ROL BUFFER4 ;

CBI PortC,0 ;SCL ;
I2C_DELAY

DEC TEMP3
CP TEMP2,TEMP3
BRNE SR1

CBI PinC,1 ;SDA
I2C_DELAY
.endm


;-------------------------------------------------------------------------
.macro I2C_DELAY
;-------------------------------------------------------------------------
LDI TEMP1,$00
LDI counter2,$01
DEL_A:
ldi counter1,$f0
DEL_B:
dec counter1
cp counter1,TEMP1
brne del_B

dec counter2
cp counter2,TEMP1
brne del_A
.endm ;
;-------------------------------------------------------------------------


.def temp1 = r16 ; Vremennoe hranenie 1
.def temp2 = r17 ; Vremennoe hranenie 2
.def temp3 = r18 ; Vremennoe hranenie 3

.def commanda= r10 ;

.def BUFFER1 = r20 ;
.def BUFFER2 = r21 ;
.def BUFFER3 = r22 ;
.def BUFFER4 = r23 ;

.def counter1= r24 ; Delay counter1
.def counter2= r25 ; Delay counter2

;************************* Interrupt Vectors: *******************************

.CSEG
.org 0 ;reset vector

ser temp1 ;Stack Pointer set
out SPH,TEMP1
out SPL,temp1
jmp Init

;******************** Program Execution Starts Here: ************************

Init:
ldi temp1,$9F ;PortB,5 - input
out DDRB ,temp1 ;PortB,6 - input

ldi temp1,$FF ;PortC - output
out DDRC ,temp1
out PortB,temp1

clr temp1
out PortC,temp1
CLI


MAIN:

I2C_START
ldi BUFFER1,$41
I2C_SEND_BYTE
SBI PortC,0 ;SCL
I2C_delay
CBI PortC,0 ;SCL
I2C_delay
I2C_READ_BYTE
I2C_delay
I2C_STOP

call Big_delay
jmp main


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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


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

E-mail: info@telesys.ru