Expertos del programa 24c02, por favor vengan
#include
sbit sda=P2^0;
sbit scl=P2^1;
sbit dula=P2^6; // Selección de segmento de tubo digital
sbit wela=P2^7; // Selección de bit de tubo digital
tabla de códigos de caracteres[]={0x3f,0x06, 0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71} ;
retraso vacíom(int x)
{
int y;
for(x;x>0;x-- )
for(y=110;y>0;y--);
}
void start()
{
scl=1;
sda=1;
sda=0;
scl=0;
}
parada nula()
{
scl=0;
sda=0;
scl =1;
sda=1;
}
bit testtack()
{
bit errorbit ;
sda=1;
scl=1;
errorbit=sda;
scl=0;
return(errorbit);
}
void writebyte(entrada de caracteres)
{
char i;
for(i=8;i>0;i--)
{
sda=(bit)(entrada&0x80);
scl = 1;
scl=0;
entrada=entrada<<1;
}
}
char readbyte()
{
char i,k;
for(i=8;i>0;i--)
{
scl=1;
k=(k<<1)|sda;
scl=0;
}
return(k);
}
void writeadd(dirección de carácter, fecha de carácter)
{
inicio();
writebyte(0xa0);
testtack();
writebyte(dirección);
testtack ( );
writebyte(fecha);
testtack();
stop();
delaym(10);
p>}
char readadd(dirección de caracteres)
{
char ch;
start();< / p>
escriturabyte
(0xa0);
testtack();
writebyte(dirección);
testtack();
start();
writebyte(0xa1);
testtack();
ch=readbyte();
stop();
return(ch);
}
void main()
{
char k;
k=readadd(3);
dula=1; //El número de tiempos de arranque se muestra en el tubo digital
P0=table[k];
dula =0;
wela=1;
P0=0xfe;
wela=0;
k++;
writeadd(3,k);
while(1);
}
Los expertos no se atreven a decir eso, aquellos que tienen Acabo de aprender, ya lo depuré. Puede ejecutarse normalmente y registrar el número de veces de arranque.
Pero primero debe borrar 24c02 a 0, luego comenzará a contar desde 0.
De lo contrario. leerá el valor almacenado en 24c02 y continuará agregando directamente
Mi programa solo puede grabar 16 veces. Si quieres más, puedes expandirlo tú mismo
qq807761589 si no lo haces. entiende, preguntame otra vez