外部中断怎么写

1.外部中断和定时器中断在一起的程序怎么写#include "reg51.h"
sbit a1=P3^2;
int Xn,SUM;
void time0_initial() //定时
{
TMOD=0x01;
TH0=(65535-5000)/256; //定时器0定时5ms
TL0=(65535-5000)%256;
EA=1;
}
void interrupt_0_initial()
{
IT0=0;
【外部中断怎么写】EX0=1;
EA=1;
}
void main(void)
{
interrupt_0_initial();
time0_initial() ;
while(1);
}
void time0() interrupt 1
{
TH0=(65535-5000)/256; //定时器0定时5ms
TL0=(65535-5000)%256;
Xn++;
}
void interrupt_0() interrupt 0
{
do
{
ET0=1;
TR0=1;
}while(a1==0)
ET0=0;
TR0=0;
SUM=Xn;
Xn=0;
}
2.请问C51的外部中断程序怎么编写用t0计时,要确保第一个中断是上部到位,如不能保证就用2个外部中断吧 。
并且2次中断间隔不能超过65.536ms(12MHz),如超过就用t0中断计时 。
思路就是上部中断清零TH0、TL0,下部中断统计 。
unsigned short time; //时间间隔
unsigned char bUp = 0; //上部到位
static void int_ex0(void) interrupt 0 using 1
{
if(bUp == 0)
{
bUp = 1;
TH0 = 0;
TL0 = 0;
}
else
{
time = TH0;
time

外部中断怎么写

文章插图