comunicacion serial I2C con el pic 16f877a

hola amigos
tengo un problema y por favor quisiera de su ayuda para solucionarlo
:enfadado:
quiero comunicarme con una memoria eprom 24lc256 mediante un pic 16f877a pero no susede nada les dejo aqui el programa que hice en asembler

LIST P=16F877A
INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


ORG 0

Inicio
banksel SSPADD
movlw .11 ;.11 para 400khz @ 20 mhz
movwf SSPADD ;lo cargo el 11 aca

banksel SSPSTAT
clrf SSPSTAT ;borro todo el SSPSTAT

banksel PIR1
bcf PIR1,SSPIF ;porseacaso pongo a 0 el SSPIF

banksel SSPCON
movlw b'00001000' ;cargo como maestro
movwf SSPCON
bsf SSPCON,SSPEN ;habilito el mssp y quedan codificadas el sda y scl conmo E/S
Espera
banksel PIR1
btfss PIR1,SSPIF ; me fijo que SSPIF se ponga a uno porque si es asi entonces abra terminado
goto Espera ;mi espera " ESTE ES MI PROBLEMA ACA SE QUEDA ENGANCHADO EL PROGRAMA
bcf PIR1,SSPIF ;Y NO SALE DE LA DEL BUCLE"
EnviandoStar
banksel SSPCON2
bsf SSPCON2,SEN ;manda star
Verificacion
banksel PIR1
btfss PIR1,SSPIF
goto Verificacion
bcf PIR1,SSPIF
EnviandoDireccion
banksel SSPBUF
movlw b'10100000' ;manda la direccion de la eprom en modo E/L
movwf SSPBUF
call Ack
EnviandoHigh
banksel SSPBUF
movlw d'0' ;manda la pagina
movwf SSPBUF
call Ack
EnviandoLow
banksel SSPBUF
movlw d'0' ;manda la posicion de la pagina
movwf SSPBUF
call Ack
EnviandoDatos
banksel SSPBUF
movlw 'a' ;manda la letra "a"
movwf SSPBUF
call Ack
EnviandoDatos1
banksel SSPBUF
movlw 'b' ;manda la letra "b"
movwf SSPBUF
call Ack
EnviandoDatos2
banksel SSPBUF
movlw 'c' ;manda la letra "c"
movwf SSPBUF
call Ack
EnviandoDatos3
banksel SSPBUF
movlw 'd'
movwf SSPBUF
call Ack
EnviandoDatos4
banksel SSPBUF
movlw 'e'
movwf SSPBUF
call Ack
EnviandoDatos5
banksel SSPBUF
movlw 'f'
movwf SSPBUF
call Ack
EnviandoStop
bsf SSPCON2,PEN ;manda stop
Fin
goto Fin
Ack
banksel SSPCON2
btfsc SSPCON2,ACKSTAT ;espera a recibir el reconocimiento del esclavo
goto Ack

END


gracias por su ayuda de antemano
 
saludos dannyy he manejado mucho este tipo de memorias pero en asm es tedioso hacerlo :D te sugiero otro entorno de programacion niple faclitame tu mail y te paso el instalador asi solucionas no te estiras tantos pelos...
Saludos
 
Atrás
Arriba