Expertos del programa 24c02, por favor vengan
#includelt;reg51.hgt;
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 nulo(int x)
{
int y;
for(x; xgt; 0; x-- )
for(y=110;ygt;0;y--);
}
void start()
{
scl=1;
sda=1;
sda=0; }
parada nula()
{
scl=0
sda=0
scl; =1;
sda=1;
}
bit testtack()
{
bit de errorbit
sda=1;
scl=1;
errorbit=sda
scl=0; p> return(errorbit);
}
void writebyte(entrada de caracteres)
{
char i;
for(i=8;igt;0;i--)
{
sda=(bit)(inputamp;0x80);
scl=1;
scl=0;
input=inputlt;1;
}
}
char readbyte()
{
char i, k;
for(i=8; igt; 0; i--)< / p>
{
scl=1;
k=(klt; lt; 1)|sda
scl=0; >
p>
}
return(k);
}
void writeadd(dirección de carácter, fecha de carácter)
{
inicio();
writebyte(0xa0);
testtack();
writebyte(dirección);
testack();
writebyte(fecha);
testack()
parada(); p> demoram( 10);
}<
/p>
char readadd(dirección de caracteres)
{
char ch;
start();
writebyte( 0xa0);
testtack();
writebyte(dirección);
testtack();
start(); p>
p>
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; p> k ;
writeadd(3, k);
while(1);
}
Los expertos no se atreven a decir, aquellos que acaban de aprenderlo ya lo han depurado. Funcionamiento normal, registre el número de arranques
Pero primero debe borrar 24c02 a 0, luego comenzará a contar desde 0
Mi programa solo puede grabar 16 veces. Si desea más, puede expandirlo usted mismo.
qq807761589 Si. no entiendes, preguntame otra vez