TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: na7alia en 20 de Mayo de 2005, 01:19:00
-
Hola!
He tratado de trabajar con la Memoria 24LC256, pero solo he logrado leer de ella. Tuve que quemarla con un programador de memorias pues utilizando el Pic Basic no logro escribir en ella. Alguien me puede ayudar?
El codigo .bas es el siguiente:
DEFINE HSER_RCSTA 90h " RECEPCION SERIAL HABILITADA
DEFINE HSER_TSTA 20h " TRANSMISION SERIAL HABILITADA
DEFINE HSER_BAUD 2400 " VELOCIDAD DE TRANSMISION 2400 BAUDIOS
SYMBOL SCL = PORTC.3
SYMBOL SDA = PORTC.4
D12 VAR BYTE
D11 VAR BYTE
D1 VAR BYTE
ESCRITURA_MEMORIA:
HSEROUT ["INGRESE EL DATO A GUARDAR EN MEMORIA (2 DIGITOS): ",13,10]
HSERIN [D11,D12]
HSEROUT [D11,D12,13,10]
D11 = D11 << 4
D12 = D12 & %00001111
D1 = D11 + D12
I2CWRITE SDA,SCL,%10101110,$0006,[D1]
PAUSE 1000
HSEROUT ["SU DATO HA SIDO GRABADO",13,10]
PAUSE 100
MAIN:
I2CREAD SDA,SCL,%10101111,$0006,[D1]
HSEROUT [13,10,"EL DATO GRABADO ES: ",HEX D1,13,10]
PAUSE 2000
GOTO MAIN
END
El programa esta dise�ado para ser leido por el hyperterminal de Windows
Muchas gracias
-
Hola Amigo aca te paso una rutina que te tendria que funcionar no es muy dificil de entender esto lo podes usar con cualquier pic y memoria que soporte el protocolo I2C te adjunto el codigo
Saludos
SO con 0 " Define serial output pin
N2400 con 4 " Set serial mode
DPIN var PORTA.0 " I2C data pin
CPIN var PORTA.1 " I2C clock pin
B0 var byte
B1 var byte
B2 var byte
For B0 = 0 To 15 " Loop 16 times
I2CWRITE DPIN,CPIN,$A0,B0,[B0] " Write each location"s address to itself
Pause 10 " Delay 10ms after each write
Next B0
loop:
For B0 = 0 To 15 step 2 " Loop 8 times
I2CREAD DPIN,CPIN,$A0,B0,[B1,B2] " Read 2 locations in a row
Serout SO,N2400,[#B1," ",#B2," "]" Print 2 locations
Next B0
Serout SO,N2400,[13,10] " Print linefeed
Goto loop