Red de conocimientos turísticos - Conocimientos sobre calendario chino - Problema de lámpara de agua corriente de microcomputadora de un solo chip_Programación C

Problema de lámpara de agua corriente de microcomputadora de un solo chip_Programación C

#include

#define uchar unsigned char

#define uint unsigned int

#define OP_WRITE 0xa0 / / Dirección del dispositivo y operación de escritura

#define OP_READ 0xa1 // Dirección del dispositivo y operación de lectura

visualización de código uchar[72]={

0xFE, 0xFD, 0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,

0xFE,0xFC,0xF8, 0xF0, 0xE0,0xC0,0x80,0x00,

0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,

0xFC,0xF9,0xF3,0xE7,0xCF, 0x9F, 0x3F,

0x9F,0xCF,0xE7,0xF3,0xF9,0xFC,0xFF,

0xE7,0xDB,0xBD,0x7E,0xBD,0xDB,0xE7,0xFF,

p>

0xE7,0xC3,0x81,0x00,0x81,0xC3,0xE7,0xFF,

0xAA,0x55,0x18,0xFF,0xF0,0x0F,

0x00,0xFF ,0x00,0xFF };

bit SDA = P2^3;

bit SCL = P2^2

inicio vacío(); /p>

void stop();

uchar shin();

bit gritar(uchar write_data

void write_byte( uchar addr, uchar write_data)

void fill_byte(uchar fill_size,uchar fill_data);

void delayms(uint ms);

uchar read_current(); >

uchar read_random(uchar random_addr);

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; /** ************************************************* **** ******/

main(void)

{

uchar i

SDA = 1 ;

SCL = 1;

fill_byte(72,0xff); // Rellena los primeros 72 bytes con 0xff

for(i = 0; i < 72; i++) //Escribe el código de visualización en AT24C02

{

write_byte(i,display[i]); >for( i =0 ;i <72 ; i++) //Eliminar datos de AT24C02 al puerto P0 para su visualización

{

P0 = read_random(i

);

retrasos(350

}

}

/************************); ********************************/

inicio nulo()

//Bit de inicio

{

SDA = 1;

SCL = 1

retrasoNOP(); p>

p>

SDA = 0;

retrasoNOP();

SCL = 0

}

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

parada nula()

// Bit de parada

{

SDA = 0;

retrasoNOP();

SCL = 1

retrasoNOP(); >

}

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

uchar shin()

// Mover datos de AT24C02 a MCU

{

uchar i,read_data;

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

{

SCL = 1;

read_data <<= 1;

read_data |= SDA

SCL = 0; }

return(read_data);

}

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

bit grito(uchar write_data )

//Mover datos de MCU a AT24C02

{

uchar i

bit ack_bit

for(i = 0; i < 8; i++) // Desplazamiento circular en 8 bits

{

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

_nop_();

SCL = 1;

retrasoNOP();

SCL = 0

escribir_datos <<; = 1;

}

SDA = 1; // Leer respuesta

delayNOP(); p>

delayNOP ();

ack_bit = SDA;

SCL = 0;

devuelve ack_bit; // Devuelve el bit de respuesta AT24C02 >

}

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

void write_byte(uchar addr, uchar write_data)

// Escribir datos en la dirección especificada addr write_data

{

start()

;

gritar(OP_WRITE);

gritar(addr);

gritar(write_data);

detener()

retrasos(10); ); // Ciclo de escritura

}

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

void fill_byte(uchar fill_size,uchar fill_data)

p>

// Rellenar datos fill_data hasta fill_size bytes en EEPROM

{

uchar i;

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

{

write_byte(i, fill_data

}

}

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

uchar read_current()

// Leer en la dirección actual

{

uchar read_data ;

iniciar();

gritar(OP_READ);

read_data = shin();

detener(); p>

devolver datos_lectura

}

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

uchar read_random(uchar random_addr)

//Leer en la dirección especificada

{

start();

gritar(OP_WRITE);

gritar( random_addr

return(read_current());

}

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

void delayms(uint ms)

// Subrutina de retardo

{

uchar k;

mientras(ms--)

{

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

}

}

Tienes que cambiarlo tú mismo porque el modelo y la personalidad de la luz son diferentes

et="_blank">Red de conocimientos turísticos All Rights Reserved.