La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Cómo utilizar IIC-24C04? ¿Alguien tiene instrucciones detalladas para este chip?

¿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 */

/********************************* ******* *******************************************

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************************************/

#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()

{

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;

inicio();

gritar(OP_READ);

read_data = shin()

detener(); p> devolver read_data;

}

/****************************** *** **********************************************

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á.