Не могу считать данные с i2c

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Hailmary
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Ср янв 18, 2023 13:01:27

Не могу считать данные с i2c

Сообщение Hailmary »

Всем доброго времени суток. Подскажите, пожалуйста, в чём проблема. Написал код для i2c между pic18f4520 и ds1307. В протеусе в дебагере всё показывает как надо: секунды, минуты, часы - а на индикатор ничего не выводит, светится 0. Код приёма такой:

Btfsc sspstat, 2
Bra $-2
Bsf sspcon2, rcen
Btfss pir1, sspif
Bra $-2
Call nackbit
Movff sspbuf, secundi
;:::::::::::::::::
Nackbit
Bsf sspcon2, ackdt
Bsf sspcon2, acken
Btfss pir1, sspif
Bra $-2
Bcf pir1, sspif
Return

Правильно я считываю секунды из буферного регистра?
Реклама
usavich
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Вс июн 04, 2023 10:26:50
Откуда: Там, за горизонтом.

Re: Не могу считать данные с i2c

Сообщение usavich »

это весь код?
Заповедь инженера #1. "Работает? Не трожь!"
Реклама
Hailmary
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Ср янв 18, 2023 13:01:27

Re: Не могу считать данные с i2c

Сообщение Hailmary »

Весь код такой

Код: Выделить всё

;;;;;;;;;;инициализация
        MOVLW	B'00011000'
	MOVWF	TRISC
	MOVLW	B'00101000'
	MOVWF	SSPCON1
	MOVLW	0X80
	MOVWF	SSPSTAT
	MOVLW	0X09		    
	MOVWF	SSPADD
main	
;;;;;;;;;;;;;;;;;передача
        CALL	BSTART
	MOVLW	0XD0
	CALL	WRITE_I2C
	MOVLW	0X00
	CALL	WRITE_I2C
	MOVLW	0X00
	CALL	WRITE_I2C
	CALL	BSTOP
	
	CALL	DELAY1
	CALL	DELAY1
	
;;;;;;;;;;;;;;;приём
start	
        CALL	BSTART
	MOVLW	0XD0
	CALL	WRITE_I2C
	MOVLW	0X00
	CALL	WRITE_I2C
	CALL	RESTARTBIT
	MOVLW	0XD1
	CALL	WRITE_I2C
	BTFSC	SSPSTAT,2
	BRA	$-2
	BSF     SSPCON2, RCEN	    
				    		    
	BTFSS   PIR1, SSPIF	   
	BRA     $-2
	BCF	PIR1, SSPIF	  
	MOVFF   SSPBUF, AA
	CALL	ACKBIT
	BSF     SSPCON2, RCEN	   
				   		    
	BTFSS   PIR1, SSPIF	   
	BRA     $-2
	BCF	PIR1, SSPIF	    
	MOVFF   SSPBUF, MSB
	
	CALL	NACKBIT
	CALL	BSTOP

	CALL	DISP
	
	GOTO	start
	
WRITE_I2C
	MOVWF	SSPBUF
	CALL	WAITMSSP
	RETURN
BSTART	BSF	SSPCON2,SEN
	CALL	WAITMSSP
	RETLW	0
RESTARTBIT
	BSF	SSPCON2,RSEN
	CALL	WAITMSSP
	RETURN
BSTOP	BSF	SSPCON2,PEN
	CALL	WAITMSSP
	RETURN
ACKBIT	BCF	SSPCON2,ACKDT
	BSF	SSPCON2,ACKEN
	CALL	WAITMSSP
	RETURN
NACKBIT	BSF	SSPCON2,ACKDT
	BSF	SSPCON2,ACKEN
	CALL	WAITMSSP
	RETURN	
WAITMSSP
	BTFSS	PIR1,SSPIF
	GOTO	WAITMSSP
	NOP
	BCF	PIR1,SSPIF
	RETURN
Ответить

Вернуться в «PIC»