STC2051外中断测脉宽串口输出,那里出问题了。值不对串口传输这里可以没有问题的了。用查询方式可以正确得到脉宽的值。但是用外中断就不行。。。不知道程序那里有问题。
void main ()
{ /*M1和M0组合控制IO配置,00双向标准IO,01为推挽输出。10仅为输入(高阻),11开漏*/
//WDT_CONTR=0x3f;
P1M1=0xb9;//10111001
P1M0=0x89;//10001001
P3M1=0xfc;//11111100
P3M0=0xf8;//11111000
TL0=0; TH0=0; TL1=0; TH1=0; EA=0; ET1=0; ET0=0; EX1=0; EX0=0;
AUXR=0xc0;//11000000,定时器1采用晶振频率不分频频为时钟源.快速计数
TMOD=0x99;//10011101,bit7/3:INT低电平控制;bit6/2:0定时,1计数;bit5/1:bit5/4/1/0:设置16位计数器.
EA=1;
dcf=0; //定时器1采用系统时钟计数,定时器0采用Q1时钟计数。
a=0;
b=0;
P1_4=1;
P3_2=0;
red_key();
c=0x00;
flage=0;
/////////////////////////
while(1)
{ AUXR=0xc0;
//while(op2==0)
// {EX1=0;EA=0;}
//TMOD=0x99;
TMOD=0x99; //设T0为方式1(GATE=1)
TR1=1;//开计数器
IT1=1; /*下降沿产生中断*/
EX1=1;//允许INT1(P3.3中断)
EA=1;
while(c==1)
{ EA=0;
TR1=0;
send_uart(a);
send_uart(b);
TMOD=0x09;
AUXR=0xc0;
c=0;
while(op1==1)
{;}
}
//EX1=0;EA=0;
//WDT_CONTR=0x3f;
}
}
int0() interrupt 2 //using 1 //INT0中断函数 }
{ //send_uart(0XFF);
//AUXR=0xc0; // 保存计数器值
a=TH1;
b=TL1;
TH1=0;
TL1=0;
c++;
//TR0=1;
}