Wiem że na forum, jest mnóstwo podobnych tematów, gdyż wiele przeczytałem, jednak żaden nie rozwiązuje mojego problemu, proszę więc nie kasować tematu, i jeżeli ktoś może to niech pomoże
Problem jest następujący, przejrzałem mnóstwo podobnych tematów, na forum i korzystając z google, kod poniżej to przepisany kod z innego programu z pewnej strony który ponoć działał, jednak nadal nie mam komunikacji mikrokontrolera z PCF8583, kod poniżej, proszę może ktoś dostrzega błąd ja nie umiem znaleźć, dodam że kod koniecznie w asemblerze
;-------------------------------------------------------------------------
;KONFIGURACJA I2C
;-------------------------------------------------------------------------
MOVLW 0X28 ;SŁOWO KONFIGURACYJNE DO I2C
MOVWF SSPCON
BANK1
MOVLW 0X09
MOVWF SSPADD ;CZĘSTOTLIWOŚĆ TRANSMISJI DLA KWARCU 4MHz
MOVLW 0X00
MOVWF SSPSTAT
BANK0
;-------------------------------------------------------------------------
;KONFIGURACJA REJESTRU KONTROLNEGO W PCF8583
;-------------------------------------------------------------------------
CALL I2C ;URUCHOM MODUŁ KOMUNIKACJI PO I2C
CALL I2C_ON ;WŁĄCZ TRANSMISJĘ PO I2C
MOVLW 0XA0 ;ADRES UKŁADU PCF8583
CALL I2C_TX ;WYŚLIJ ADRES URZĄDZENIA
MOVLW 0X00 ;ADRES KOMÓRKI DO KTÓREJ PRZESYTŁAMY DANE
CALL I2C_TX ;WYŚLIJ ADRES KOMÓRKI
MOVLW 0X00 ;WARTOŚĆ KONFIGURACYJNA
CALL I2C_TX ;WYŚLIJ SŁOWO KONFIGURACYJNE
CALL I2C_OFF ;WYŁĄCZ TRANSMISJĘ PO I2C
.
.
.
;************************************************************************
;************************************************************************
;------------------------------------------------------------------------------
;ODCZYT Z PCF8583
;------------------------------------------------------------------------------
CALL I2C
CALL I2C_ON
MOVLW 0XA0 ;ADERS ZEGARA
CALL I2C_TX ;WYSLIJ ADRES
MOVLW 0X04 ;ADRES KOMÓRKI
CALL I2C_TX ;WYSYŁANIE ADRESU KOMÓRKI
CALL I2C_OFF ;BIT STOPU
MOVLW 0XA1 ;ADRES Z BITEM ODCZYTU
CALL I2C_TX ;WYŚLIJ ADRES Z BITEM ODCZYTU
CALL I2C_RX ;ODCZYT DANEJ Z WCZĘSNIEJ PODANEGO ADRESU KOMÓRKI PAMIĘCI
MOVWF SSPBUF ;ODCZYTANA WARTOŚĆ DO W
MOVWF GODZINY ;PRZESŁANIE ODCZYTANEJ WARTOŚCI DO REJESTRU GODZINY
CALL I2C
CALL I2C_ON
MOVLW 0XA0 ;ADERS ZEGARA
CALL I2C_TX ;WYSLIJ ADRES
MOVLW 0X03 ;ADRES KOMÓRKI
CALL I2C_TX ;WYSYŁANIE ADRESU KOMÓRKI
CALL I2C_OFF ;BIT STOPU
MOVLW 0XA1 ;ADRES Z BITEM ODCZYTU
CALL I2C_TX ;WYŚLIJ ADRES Z BITEM ODCZYTU
CALL I2C_RX ;ODCZYT DANEJ Z WCZĘSNIEJ PODANEGO ADRESU KOMÓRKI PAMIĘCI
MOVWF SSPBUF ;ODCZYTANA WARTOŚĆ DO W
MOVWF MINUTY ;PRZESŁANIE ODCZYTANEJ WARTOŚCI DO REJESTRU MINUTY
CALL I2C
CALL I2C_ON
MOVLW 0XA0 ;ADERS ZEGARA
CALL I2C_TX ;WYSLIJ ADRES
MOVLW 0X02 ;ADRES KOMÓRKI
CALL I2C_TX ;WYSYŁANIE ADRESU KOMÓRKI
CALL I2C_OFF ;BIT STOPU
MOVLW 0XA1 ;ADRES Z BITEM ODCZYTU
CALL I2C_TX ;WYŚLIJ ADRES Z BITEM ODCZYTU
CALL I2C_RX ;ODCZYT DANEJ Z WCZĘSNIEJ PODANEGO ADRESU KOMÓRKI PAMIĘCI
MOVWF SSPBUF ;ODCZYTANA WARTOŚĆ DO W
MOVWF SEKUNDY ;PRZESŁANIE ODCZYTANEJ WARTOŚCI DO REJESTRU MINUTY
;----------------------PROCEDURA KOMUNIKACJI I2C-------------------------
;************************************************************************
;************************************************************************
I2C
BSF SSPCON, SSPEN ;UAKTYWNIENIE MODUŁU I2C
RETURN
I2C_ON
BCF PIR1, SSPIF ;ZERUJ FLAGĘ
BANK1
BSF SSPCON2, SEN ;ODBLOKOWANIE STARTU NA SDA I SCL
BANK1
GOTO I2C_CZEKAJ
I2C_TX ;WYSYŁANIE DANYCH PO UPRZEDNIM ZAŁADOWANIU DO W
MOVWF SSPBUF ;WARTOŚĆ DO WYSŁANIA
GOTO I2C_CZEKAJ
I2C_RX ;ODBIÓR DANYCH
BANK1
BSF SSPCON2, RCEN ;ODBLOKOWANIE ODBIORU DANYCH
BANK0
GOTO I2C_CZEKAJ
I2C_OFF ;KONIEC TRANSMISJI
BANK1
BSF SSPCON2, PEN
BANK0
I2C_CZEKAJ ;CZEKANIE NA USTAWIENIE FLAGI
BTFSS PIR1, SSPIF ;SPAWDZANIE BITU PRZERWANIA PO NADANIU LUB ODBIORZE BAJTU
GOTO I2C_CZEKAJ
BCF PIR1, SSPIF
RETURN
Problem jest następujący, przejrzałem mnóstwo podobnych tematów, na forum i korzystając z google, kod poniżej to przepisany kod z innego programu z pewnej strony który ponoć działał, jednak nadal nie mam komunikacji mikrokontrolera z PCF8583, kod poniżej, proszę może ktoś dostrzega błąd ja nie umiem znaleźć, dodam że kod koniecznie w asemblerze
;-------------------------------------------------------------------------
;KONFIGURACJA I2C
;-------------------------------------------------------------------------
MOVLW 0X28 ;SŁOWO KONFIGURACYJNE DO I2C
MOVWF SSPCON
BANK1
MOVLW 0X09
MOVWF SSPADD ;CZĘSTOTLIWOŚĆ TRANSMISJI DLA KWARCU 4MHz
MOVLW 0X00
MOVWF SSPSTAT
BANK0
;-------------------------------------------------------------------------
;KONFIGURACJA REJESTRU KONTROLNEGO W PCF8583
;-------------------------------------------------------------------------
CALL I2C ;URUCHOM MODUŁ KOMUNIKACJI PO I2C
CALL I2C_ON ;WŁĄCZ TRANSMISJĘ PO I2C
MOVLW 0XA0 ;ADRES UKŁADU PCF8583
CALL I2C_TX ;WYŚLIJ ADRES URZĄDZENIA
MOVLW 0X00 ;ADRES KOMÓRKI DO KTÓREJ PRZESYTŁAMY DANE
CALL I2C_TX ;WYŚLIJ ADRES KOMÓRKI
MOVLW 0X00 ;WARTOŚĆ KONFIGURACYJNA
CALL I2C_TX ;WYŚLIJ SŁOWO KONFIGURACYJNE
CALL I2C_OFF ;WYŁĄCZ TRANSMISJĘ PO I2C
.
.
.
;************************************************************************
;************************************************************************
;------------------------------------------------------------------------------
;ODCZYT Z PCF8583
;------------------------------------------------------------------------------
CALL I2C
CALL I2C_ON
MOVLW 0XA0 ;ADERS ZEGARA
CALL I2C_TX ;WYSLIJ ADRES
MOVLW 0X04 ;ADRES KOMÓRKI
CALL I2C_TX ;WYSYŁANIE ADRESU KOMÓRKI
CALL I2C_OFF ;BIT STOPU
MOVLW 0XA1 ;ADRES Z BITEM ODCZYTU
CALL I2C_TX ;WYŚLIJ ADRES Z BITEM ODCZYTU
CALL I2C_RX ;ODCZYT DANEJ Z WCZĘSNIEJ PODANEGO ADRESU KOMÓRKI PAMIĘCI
MOVWF SSPBUF ;ODCZYTANA WARTOŚĆ DO W
MOVWF GODZINY ;PRZESŁANIE ODCZYTANEJ WARTOŚCI DO REJESTRU GODZINY
CALL I2C
CALL I2C_ON
MOVLW 0XA0 ;ADERS ZEGARA
CALL I2C_TX ;WYSLIJ ADRES
MOVLW 0X03 ;ADRES KOMÓRKI
CALL I2C_TX ;WYSYŁANIE ADRESU KOMÓRKI
CALL I2C_OFF ;BIT STOPU
MOVLW 0XA1 ;ADRES Z BITEM ODCZYTU
CALL I2C_TX ;WYŚLIJ ADRES Z BITEM ODCZYTU
CALL I2C_RX ;ODCZYT DANEJ Z WCZĘSNIEJ PODANEGO ADRESU KOMÓRKI PAMIĘCI
MOVWF SSPBUF ;ODCZYTANA WARTOŚĆ DO W
MOVWF MINUTY ;PRZESŁANIE ODCZYTANEJ WARTOŚCI DO REJESTRU MINUTY
CALL I2C
CALL I2C_ON
MOVLW 0XA0 ;ADERS ZEGARA
CALL I2C_TX ;WYSLIJ ADRES
MOVLW 0X02 ;ADRES KOMÓRKI
CALL I2C_TX ;WYSYŁANIE ADRESU KOMÓRKI
CALL I2C_OFF ;BIT STOPU
MOVLW 0XA1 ;ADRES Z BITEM ODCZYTU
CALL I2C_TX ;WYŚLIJ ADRES Z BITEM ODCZYTU
CALL I2C_RX ;ODCZYT DANEJ Z WCZĘSNIEJ PODANEGO ADRESU KOMÓRKI PAMIĘCI
MOVWF SSPBUF ;ODCZYTANA WARTOŚĆ DO W
MOVWF SEKUNDY ;PRZESŁANIE ODCZYTANEJ WARTOŚCI DO REJESTRU MINUTY
;----------------------PROCEDURA KOMUNIKACJI I2C-------------------------
;************************************************************************
;************************************************************************
I2C
BSF SSPCON, SSPEN ;UAKTYWNIENIE MODUŁU I2C
RETURN
I2C_ON
BCF PIR1, SSPIF ;ZERUJ FLAGĘ
BANK1
BSF SSPCON2, SEN ;ODBLOKOWANIE STARTU NA SDA I SCL
BANK1
GOTO I2C_CZEKAJ
I2C_TX ;WYSYŁANIE DANYCH PO UPRZEDNIM ZAŁADOWANIU DO W
MOVWF SSPBUF ;WARTOŚĆ DO WYSŁANIA
GOTO I2C_CZEKAJ
I2C_RX ;ODBIÓR DANYCH
BANK1
BSF SSPCON2, RCEN ;ODBLOKOWANIE ODBIORU DANYCH
BANK0
GOTO I2C_CZEKAJ
I2C_OFF ;KONIEC TRANSMISJI
BANK1
BSF SSPCON2, PEN
BANK0
I2C_CZEKAJ ;CZEKANIE NA USTAWIENIE FLAGI
BTFSS PIR1, SSPIF ;SPAWDZANIE BITU PRZERWANIA PO NADANIU LUB ODBIORZE BAJTU
GOTO I2C_CZEKAJ
BCF PIR1, SSPIF
RETURN