La programación en lenguaje C del modo de interrupción general del microcontrolador stc12c5a60s2 lee el botón S1, registra el número de veces que se presiona S1 y genera el número a través del puerto P2.
#includelt;at89x51.hgt;
unsigned?char?cont;//Definir variable de recuento de claves
void?delayms(unsigned?char?time) //stc?1t?12MHz?1ms de retraso
{
unsigned?char?a, b, c; while (time--)?
for (c=1;cgt;0;c--)
for(b=222;bgt;0;b--)
for(a=12;agt; 0 ; a--);
}
void?main(void)
{
P2=cont=0;< / p>
IT0=1; //Establece el modo de disparo en disparo de flanco descendente
EX0=1; //Activa la interrupción externa 0
EA=1; Activar Interrupción total
while(1)
{
if(!P3_5)//S2 se detecta pulsación
{ p>
p>
P2=cont=0; //Borrar valor
delayms(200);
}
} p>
}
void?EXinterrupt0(void)interrupt?0//Interrupción externa 0
{
//Apagar; interrupciones para evitar activaciones repetidas
IE0=0; //Borrar el indicador de interrupción externa 0
cont; //Recuento de claves 1
P2=cont; /Salida a P2 para visualización
delayms(200); //Tiempo de retardo
EX0=1; //Restaurar interrupción externa 0
}