Red de conocimiento informático - Conocimiento de la instalación - Escriba un programa para el microcontrolador at89c52 para controlar el circuito del cronómetro y mostrar de 0 a 99 en un bucle.

Escriba un programa para el microcontrolador at89c52 para controlar el circuito del cronómetro y mostrar de 0 a 99 en un bucle.

Lo que escribí es ***ánodo, necesitas ***cátodo, simplemente cambia el nivel de entrada RXD, TDX y el valor del código P2 tú mismo.

Conéctese según los requisitos de su tema. Los dos LED se muestran dinámicamente. El tiempo de intervalo de alternancia es constante. Lo configuré en 50 ms. Debido a que estoy usando un software de simulación, el tiempo de intervalo es demasiado corto para mostrar el efecto de alternancia. el intervalo de tiempo es menor.

Además, el botón de pausa en su pregunta está conectado a un pin público. Si el botón está conectado directamente a la interrupción externa 0 para implementar la pausa, será más sensible.

#include

#define uint unsigned int

#define uchar unsigned char

#define duan P2

#define stime 50 //Tiempo entre parpadeos alternos del LED

void init();

void pausa()

sbit wei1; =P3^0;

sbit wei2=P3^1;

sbit s2=P1^4;

sbit s3=P1^ 6;

/***Anodo

retraso nulo(uint xms);

uint g=0

uint s=0; >

uint count=0;

uint ispause=0;

void main()

{

uchar nums[10]={0xc0,0xf9,0xa4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x98};

init();

mientras(1 )

{

si(s2= =0 && ispause==0)

{

si(s2==0)

{

mientras(s2==0);

ispause=1;

pausa();

}}

}

si no(s3==0 && ispause==1)

if(s3==0)

{

{

mientras(s3==0);

ispause=0;

pausa();

}

.

p>}

si(s==0)

{

duan=nums[g];

wei1=0;

wei2=1;

}

else

{

duan=nums[s];

wei1=1;

wei2=0;

retraso(tiempo);

duan=nums[g];

wei1=0;

wei2=1;

retraso (tiempo);

}

}

}

}

pausa vacía()

{

EA=~EA;

}

void init()

{

TMOD=0x02; //El modo de trabajo T0 2 carga automáticamente 200us de 8 bits

TH0=0x38;<

TL0=0x38;

EA =1;

ET0=1;

TR0=1;

}

interrupción ct() nula?1

{

si(cuenta<5000)

cuenta++;

si no

{

cuenta=0;

si(g==9)

{

g=0;

si(s== 9 )

<

p>s=0;

más

s++;

s=0;

más

s++ ;

}

else

g++;

}

}

nulo retraso(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j= 112;j>0;j--);

}