Red de conocimiento de abogados - Derecho de sociedades - ¿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); 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

demorams(250 );

mientras(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

Entrada

Parámetros: ms

Parámetros de exportación:

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

retrasos vacíos(ms sin firmar)

{

caracteres sin firmar i;

while(ms--)

{

for(i = 0; i < 120; i++);

}

}

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

Función: Señal de inicio

Parámetros de entrada:

Parámetros de exportación:

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

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_() ;

p>

_nop_();

_nop_();

_nop_();

SDA = 1;

}

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

Función: Leer datos

Parámetro de entrada:

Parámetro de salida: read_data

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

char shin sin firmar()

{

char i sin firmar,read_data;

for(i = 0; i < 8; i++)

{

SCL = 1;

read_data <<= 1;

read_data |= (carácter sin firmar) SDA;

SCL = 0;

}

retorno(

read_data);

}

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

Función: escribir datos en EEPROM

Parámetro de entrada: write_data

Parámetro de salida: ack_bit

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

bit gritar(unsigned char write_data)

{

carácter sin firmar i;

p>

bit ack_bit;

for(i = 0; i < 8; i++)

{

SDA = (bit)(write_data & 0x80);

_nop_();

SCL = 1;

_nop_();

_nop_();

SCL = 0;

write_data <<= 1;

}

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:

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

void write_byte(dirección de caracteres sin firmar, char sin firmar write_data)

{

start();

gritar(OP_WRITE);

gritar(addr);

gritar(write_data);

detener();

delayms(10);

}

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

Función: Leer datos de la dirección actual

Parámetros de entrada:

Parámetros de salida: read_data

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

carácter sin firmar read_current()

{

sin firmar

char read_data;

start();

gritar(OP_READ);

read_data = shin();

stop();

return 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)

{

start();

gritar(OP_WRITE);

gritar(random_addr);

return(read_current());

}

#endif

Lo anterior es un archivo de encabezado. Por cierto, eres demasiado tacaño y no te recompensará. un solo punto. Si no lo guardé. Si tienes un código que hayas escrito antes, no podrás responderlo.