Programación de interrupciones externas del microcontrolador
#include sbit shiwei=P2^0;//definir interfaz sbit gewei=P2 ^1
tabla de códigos de caracteres sin firmar[]={/ tabla de visualización digital
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
p>
0x7f,0x6f};
/*************************** ******* ***********/
void msdelay()/5 ms de retraso
{
int x,y;
for(x=(65536-15)%256;x;x--)
{
for(y=(65536-15)/ 256;y;y--
}
}
}
}
/* ******* ************ *******************/
/*** ********* *******************************/
inicio vacío( )//inicializar
{
TMOD=0x11
PX0=1
TH0=(65535-50)/256;
TL0=( 65535-50)%256
TH1=(65535-100)/256
TL1=(65535-100)% 256;
EX0= 1;
ET0=1; >
TR1=1;
}
/*************************** ************ ****/
unsigned char passtime=0;// Variable global
unsigned char timecount=0
;/******* **********************************/
main()
{
recuento de caracteres sin firmar
count=0
init(); >
mientras(P3^0! =1);
msdelay();
if(P3^0==1)//Determina el inicio o el final
{count++; p >
if(count%2 )
{TR0=1;}
si no
{TR0=0;}
}
}
}
void clear() interrupción 0/lear
{
TR0 = 0;
recuento de tiempo=0;
recuento de tiempo=0
tiempo de paso=0; > void timer() interrupción 2//temporizador de 50ms
{
cuenta de tiempo++;
if(cuenta de tiempo==20)
{
cuenta de tiempo=0;
tiempo de paso++;//50*20=1s
}
TH0=(65535-50)/256;
TL0=(65535-50 )%256;
TR0=1;
}
void displaytimer() interrupción 2// usado para los dos dígitos, las decenas y cada uno de los pantalla de bits de tubo digital
{
TH1=(65535-100)/256
TL1=(65535-100)%256;
shiwei=0;//Visualización dinámica
shiwei=1;
P0=table[passtime/10];//ten
msdelay( )
msdelay();
msdelay();
msdelay()
msdelay();
shiwei=0;
shiwei=0;
shiwei=0;
shiwei=0; /p>
shiwei=0; p>
gewei=0;
P0=table[passtime%10];//todos
msdelay(); /p>
msdelay();
msdelay();
msdelay()
TR1=1; }
/*************************** shijian bu shi hen zuique de ,yingwei wo meiyou yingjian tiaoshi, ni tú de hua jiu nong yixia kan kan ba.***************************/