bonjour,
Pour commencer , je me suis procuré une 24c16 , cette EEprom utilise le protocole I²C , ok mon petit problème c'est mon programme , j'ai beau chercher ou se trouve l erreur , rien .
voila je suis la pour vous demander de l aide . Merci d'avance
----------------------------------------------------------
list p = 16f84
#include <p16f84.inc>
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
CBLOCK 0x0c
var1:1
var2: 1
endc
;************* MACRO ***************************
bank0 macro
bcf STATUS,RP0
endm
bank1 macro
bsf STATUS,RP1
endm
;************* CONSTANTES **********************
DebutRAM equ 00Ch
BOOLEEN equ (DebutRAM+1)
I2C_ACK equ 0
SD equ 4
SC equ 3
;************* RESET ***************************
org 0x0000
goto init
;************* INITIALISATION ******************
init
bank1
movlw b'00000000'
movwf TRISA ; RA3=SC , RA4=SD
movlw b'01111111'
movwf OPTION_REG ; résistance pull-up
bank0
bsf PORTA,SD
bsf PORTA,SC
goto start
;************ TEMPORISATION *********************
tempo nop ; call(2µs)+nop(1µs)+return(2µs) = 5µs
return
;*********** SOUS-ROUTINE ***********************
M_START bsf PORTA,SC ; Envoi un ordre de debut
bsf PORTA,SD
call tempo
bcf PORTA,SD
call tempo
bcf PORTA,SC
call tempo
bsf PORTA,SD
return
M_STOP bcf PORTA,SC
bcf PORTA,SD
call tempo
bsf PORTA,SC
call tempo
bsf PORTA,SD
call tempo
return
ENVOI movwf var1
movlw 8
movwf var2
second_bit
bcf PORTA,SC
btfss var1,7
bcf PORTA,SD
btfsc var1,7
bsf PORTA,SD
call tempo
bsf PORTA,SC
call tempo
bcf PORTA,SC
rlf var1,f
decfsz var2,f
goto second_bit
bsf PORTA,SD
return
;*********** PROGRAMME **************************
start
call M_START
movlw b'10100000'
call ENVOI
call M_ACK
movlw 0002h
call ENVOI
call M_ACK
movlw 5Ah
call ENVOI
call M_ACK
call M_STOP
goto start
end
-----