Gracias Suky por interesarte, bueno probe con las resistencias de 4K7 y otras que recomienda Microchip y ortas que probe y siempre pasa lo mismo, ahora fijandome bien lee solo los primeros 8 bytes con el valor C4 (ni idea porque).
EL codigo que uso y hasta ahora anda ok es este.
Lo raro es que si no le pongo la resistencia de pull-up en la primer placa anda ok, al instalarselo falla.
Realmene estoy desorientado.
;**********************************************************************************
; Rutina para leer secuencialmente x cantidad de datos
; de una memoria FLASH
;**********************************************************************************
;
; CLOCK Rb7 ---> SCL
; data/addr Rb6 ---> SDA
;
; dato a leer ---> dato
; address high ---> addrh
; address low ---> addrl
;
;**********************************************************************************
;Para leer un dato de una memoria FLASH 24C512 se debe tener
;en cuenta los soguientes pasos
;
read bsf status,5 ;bank 1
movlw b'00111111' ;Seteo puerto A Rb6 -> SDA Salida
movwf trisb ; Rb7 -> CLK Salida
bcf status,5 ;bank 0
;-------------------------------
;Condicion de NOT BUSY - START
bsf ptob,7 ;Condicion NOT BUSY (1)
bsf ptob,6 ; (1)
bcf ptob,6 ;Condicion de START (1->0)
bcf ptob,7 ;dato 1-0 mientras clk 1 (0)
;-------------------------------
;BYTE de CONTROL
bsf ptob,6 ;Control CODE 1010 (1)
call pclock ;Pulso de Clock
bcf ptob,6 ;Control CODE 1010 (0)
call pclock ;Pulso de Clock
bsf ptob,6 ;Control CODE 1010 (1)
call pclock ;Pulso de Clock
bcf ptob,6 ;Control CODE 1010 (0)
call pclock ;Pulso de Clock
bcf ptob,6 ;DEVICE SELECT 000 (0)
call pclock ;Pulso de Clock
bcf ptob,6 ;DEVICE SELECT 000 (0)
call pclock ;Pulso de Clock
bcf ptob,6 ;DEVICE SELECT 000 (0)
call pclock ;Pulso de Clock
bcf ptob,6 ;CONTROL BIT R/W (grabar)(0)
call pclock ;Pulso de Clock
bsf status,5 ;bank 1
movlw b'01111111' ;Seteo Rb6 entrada
movwf trisb ;
bcf status,5 ;bank 0
call pclock ;Pulso de Clock
read12 movf ptob,0 ;leo el puerto A y guardo lo leido en W
andlw b'01000000' ;dejo pasar Rb6
btfss status,2 ;
goto read12 ;
bsf status,5 ;bank 1
movlw b'00111111' ;Seteo Rb6 salida
movwf trisb ;
bcf status,5 ;bank 0
;-------------------------------
;ENVIO de ADDRH
read1 movlw 8
movwf bitt
read11 rlf addrh,1 ;rotar addrh izq por carry
btfss status,0 ;carry=1
bcf ptob,6 ;Axx (0)
btfsc status,0 ;carry=0
bsf ptob,6 ;Axx (1)
call pclock ;Pulso de Clock
decfsz bitt,1
goto read11
rlf addrh,1 ;rotar addrh para dejarlo como estaba
bsf status,5 ;bank 1
movlw b'01111111' ;Seteo Rb6 entrada
movwf trisb
bcf status,5 ;bank 0
call pclock ;Pulso de Clock
movf ptob,0 ;leo el puerto A y guardo lo leido en W
andlw b'01000000' ;dejo pasar Rb6
btfss status,2
goto read1
bsf status,5 ;bank 1
movlw b'00111111' ;Seteo Rb6 salida
movwf trisb
bcf status,5 ;bank 0
;-------------------------------
;ENVIO de ADDRL
read2 movlw 8
movwf bitt
read22 rlf addrl,1 ;rotar addrh izq por carry
btfss status,0 ;carry=1
bcf ptob,6 ;Ax (0)
btfsc status,0 ;carry=0
bsf ptob,6 ;Ax (1)
call pclock ;Pulso de Clock
decfsz bitt,1
goto read22
rlf addrl,1 ;rotar addrl para dejarlo como estaba
bsf status,5 ;bank 1
movlw b'01111111' ;Seteo Rb6 entrada
movwf trisb
bcf status,5 ;bank 0
call pclock ;Pulso de Clock para ACK
movf ptob,0 ;leo el puerto A y guardo lo leido en W
andlw b'01000000' ;dejo pasar Rb6
btfss status,2
goto read2
bsf status,5 ;bank 1
movlw b'00111111' ;Seteo Rb6 salida
movwf trisb
bcf status,5 ;bank 0
;-------------------------------
;fin de posicion de address
;-------------------------------
;Condicion de NOT BUSY - START
bsf ptob,7 ;Condicion NOT BUSY (1)
bsf ptob,6 ; (1)
bcf ptob,6 ;Condicion de START (1->0)
bcf ptob,7 ;dato 1-0 mientras clk 1 (0)
;-------------------------------
;BYTE de CONTROL
bsf ptob,6 ;Control CODE 1010 (1)
call pclock ;Pulso de Clock
bcf ptob,6 ;Control CODE 1010 (0)
call pclock ;Pulso de Clock
bsf ptob,6 ;Control CODE 1010 (1)
call pclock ;Pulso de Clock
bcf ptob,6 ;Control CODE 1010 (0)
call pclock ;Pulso de Clock
bcf ptob,6 ;DEVICE SELECT 000 (0)
call pclock ;Pulso de Clock
bcf ptob,6 ;DEVICE SELECT 000 (0)
call pclock ;Pulso de Clock
bcf ptob,6 ;DEVICE SELECT 000 (0)
call pclock ;Pulso de Clock
bsf ptob,6 ;CONTROL BIT R/W (leer) (1)
call pclock ;Pulso de Clock
bsf status,5 ;bank 1
movlw b'01111111' ;Seteo Rb6 entrada
movwf trisb
bcf status,5 ;bank 0
call pclock ;Pulso de Clock para ACK
movf ptob,0 ;leo el puerto A y guardo lo leido en W
andlw b'01000000' ;dejo pasar Rb6
btfss status,2
goto read
bsf status,5 ;bank 1
movlw b'00111111' ;Seteo Rb6 salida
movwf trisb
bcf status,5 ;bank 0
return
;-------------------------------
;Recepcion de DATO
read3 bsf status,5 ;bank 1
movlw b'01111111' ;Seteo Rb6 entrada
movwf trisb
bcf status,5 ;bank 0
movlw 0
movwf dato
;---------------------------------------
;Captura del bit 7 de dato
bsf ptob,7 ;Pulso de CLOCK
movf ptob,0
movwf bitt
btfss bitt,6
bcf dato,7 ;si el dato recibido es 0 seteo el bit 7 en 0
btfsc bitt,6
bsf dato,7 ;si el dato recibido es 1 seteo el bit 7 en 1
bcf ptob,7 ;
;---------------------------------------
;Captura del bit 6 de dato
bsf ptob,7 ;Pulso de CLOCK
movf ptob,0
movwf bitt
btfss bitt,6 ;
bcf dato,6 ;si el dato recibido es 1 seteo el bit 6 en 1
btfsc bitt,6
bsf dato,6 ;si el dato recibido es 0 seteo el bit 6 en 0
bcf ptob,7 ;
;---------------------------------------
;Captura del bit 5 de dato
bsf ptob,7 ;Pulso de CLOCK
movf ptob,0
movwf bitt
btfss bitt,6 ;
bcf dato,5 ;si el dato recibido es 1 seteo el bit 5 en 1
btfsc bitt,6
bsf dato,5 ;si el dato recibido es 0 seteo el bit 5 en 0
bcf ptob,7 ;
;---------------------------------------
;Captura del bit 4 de dato
bsf ptob,7 ;Pulso de CLOCK
movf ptob,0
movwf bitt
btfss bitt,6 ;
bcf dato,4 ;si el dato recibido es 1 seteo el bit 4 en 1
btfsc bitt,6
bsf dato,4 ;si el dato recibido es 0 seteo el bit 4 en 0
bcf ptob,7 ;
;---------------------------------------
;Captura del bit 3 de dato
bsf ptob,7 ;Pulso de CLOCK
movf ptob,0
movwf bitt
btfss bitt,6 ;
bcf dato,3 ;si el dato recibido es 1 seteo el bit 3 en 1
btfsc bitt,6
bsf dato,3 ;si el dato recibido es 0 seteo el bit 3 en 0
bcf ptob,7 ;
;---------------------------------------
;Captura del bit 2 de dato
bsf ptob,7 ;Pulso de CLOCK
movf ptob,0
movwf bitt
btfss bitt,6 ;
bcf dato,2 ;si el dato recibido es 1 seteo el bit 2 en 1
btfsc bitt,6
bsf dato,2 ;si el dato recibido es 0 seteo el bit 2 en 0
bcf ptob,7 ;
;---------------------------------------
;Captura del bit 1 de dato
bsf ptob,7 ;Pulso de CLOCK
movf ptob,0
movwf bitt
btfss bitt,6 ;
bcf dato,1 ;si el dato recibido es 1 seteo el bit 1 en 1
btfsc bitt,6
bsf dato,1 ;si el dato recibido es 0 seteo el bit 1 en 0
bcf ptob,7 ;
;---------------------------------------
;Captura del bit 0 de dato
bsf ptob,7 ;Pulso de CLOCK
movf ptob,0
movwf bitt
btfss bitt,6 ;
bcf dato,0 ;si el dato recibido es 1 seteo el bit 1 en 1
btfsc bitt,6
bsf dato,0 ;si el dato recibido es 0 seteo el bit 1 en 0
bcf ptob,7 ;
;----------------------------------------
bsf status,5 ;bank 1
movlw b'00111111' ;Seteo Rb6 salida
movwf trisb
bcf status,5 ;bank 0
return
;----------------------------------------
rdstop ;Condicion de STOP para fin de lectura
bcf ptob,6 ;DATO en Low
bsf ptob,7 ;Condicion de STOP
bsf ptob,6 ;dato 0-1 mientras clk 1
bcf ptob,7 ;clock 0
return