¿Cómo utilizar IIC-24C04? ¿Alguien tiene instrucciones detalladas para este chip?
/****************************************** **********/
/*Programa de demostración de lectura y escritura EEPROM */
/*Dispositivo de destino: AT89S51 */
/ *Oscilador de cristal: 11.0592MHZ */
/********************************* ******* ******************************************* p>
Función Función: Programa principal
Parámetros de entrada:
Parámetros de salida:
************** ********* ******************************************* ********** ******/
/*void main(void)
{
int eepromdata=0 ; //Datos leídos del espacio de almacenamiento EEPROM
SDA = 1;
SCL = 1
write_byte(0x01, 0x55); 85) para dirigir 0x01 Datos
delayms(250);
write_byte(0x02, 0xAA); //Escribir datos 0xAA(170) para dirigir 0x02
delayms(250 );
delayms(250);
eepromdata= read_random(0x02); // Lee los datos en una de las direcciones para verificar
delayms(250 );
while(1);
}*/
/*************** *** *************************************/
#ifndef __I2C_H__
#define __I2C_H__
/********************************* ****incluye archivos de encabezado* *******************************/
#include " at89x51.h"
#include "intrins.h"
/************************ ******** *Definición de datos************************************/ p>
#define OP_READ 0xa1 // Dirección del dispositivo y operación de lectura
#define OP_WRITE 0xa0 // Dirección del dispositivo y operación de escritura
//0xa0 se puede utilizar para escribir el 256 bytes de la primera página de 24C04, luego se usa 0xa2 para escribir la segunda página
/************************ ******** *Definición de puerto************************************/
bit SDA = P3^ 3;
bit SCL = P3^4;
/**
************************************************** * ***********************
Función: Subrutina de retardo
Parámetro de entrada: ms
Parámetros de exportación:
************************************ *****************************************/
void delayms(unsigned char ms)
{
unsigned char i
while(ms--)
{
for(i = 0; i lt; 120; i
}
}
/*******); ************************************************** * *******************
Función: Señal de inicio
Parámetros de entrada:
Parámetros de salida:
********************************************* *** **********************************/
inicio vacío() p>
{
SDA = 1;
SCL = 1
_nop_()
_nop_();
SDA = 0
_nop_();
_nop_()
_nop_(); > _nop_( );
SCL = 0;
}
/****************** ****** ********************************************** ******* *****
Función: Señal de parada
Parámetros de entrada:
Parámetros de salida:
****** ********************************************** ******* *************************/
parada nula()
{
SDA = 0 ;
_nop_();
_nop_();
SCL = 1;
_nop_();
_nop_();
_nop_();
_nop_();
SDA = 1;
}
/************************************ ************** *******************************
Función: Leer datos
Parámetros de entrada:
Parámetros de salida: read_data
****************** ************** ************************************* ************/
char shin sin firmar()
{
carácter sin firmar i, read_data;
for(i = 0; i lt; 8; i)
{
SCL = 1;
read_data lt; = 1;
read_data |= (carácter sin firmar)
SCL = 0; p> return(read_data);
}
/*************************** *** ************************************************* **
Función: escribir datos en EEPROM
Parámetro de entrada: write_data
Parámetro de salida: ack_bit
****** ** ************************************************* *** *******************/
bit grito(unsigned char write_data)
{
carácter sin firmar i;
bit ack_bit;
for(i = 0; i lt; 8; i )
{
SDA = ( bit)(write_data amp; 0x80);
_nop_();
SCL = 1;
_nop_();
_nop_ ();
SCL = 0;
escribir_datos lt;
}
SDA = 1;
p>_nop_();
_nop_();
SCL = 1
_nop_(); >
_nop_ ();
_nop_();
_nop_();
ack_bit = SDA // Leer respuesta
SCL = 0;
return ack_bit; // Devuelve el bit de reconocimiento AT24Cxx
}
/************ ************************************************* ***** **********
Función: escribir datos en la dirección especificada
Parámetros de entrada: addr, write_data
Parámetros de salida:
p>*************************************** ********** *******************************/
nulo write_byte(dirección de caracteres sin firmar, datos de escritura de caracteres sin firmar)
{
inicio();
gritar(OP_WRITE);
gritar( addr);
gritar(write_data);
detener();
demorams(10).
}
/********************************); *********************************************
Función: Leer datos de la dirección actual
Parámetros de entrada:
Parámetros de salida: read_data
************** ** ************************************************* *** *************/
unsigned char read_current()
{
unsigned char read_data; p>
inicio();
gritar(OP_READ);
read_data = shin()
detener(); p> devolver read_data;
}
/****************************** *** ********************************************** p>
Función: leer datos en la dirección especificada
Parámetro de entrada: random_addr
Parámetro de salida: read_data
******* *** ************************************************* **** *******************/
carácter sin firmar read_random(carácter sin firmar random_addr)
{
inicio();
gritar(OP_WRITE);
gritar(random_addr);
retorno(read_current()); p>}
#endif
Lo anterior es un archivo de encabezado. Por cierto, eres demasiado tacaño y no te recompensaré ni por un centavo. Si no hubiera guardado el código que había escrito antes, habría sido No responderá.