|
我写的这个程序,可是每次time的值应该在5060us左右,现在读出来很小,是什么原因?用的是sc6122的芯片
#include
#include
void init();
void delay(unsigned char j);
unsigned char timeH,timeL,j;
unsigned int time,ij=0;//定义2个下降沿的时间
static unsigned int k=0;
//当第一个下降沿来的时候就是9ms高转为4.5ms低的时候,开始让T0计时,当第二个下降沿来的时候就是0.56ms高转为低的时候,停止T0,保存TH0,TL0的数据到time,读出time的时间
void ISR_INT0() interrupt 0 //外部中断0服务程序
{
++ij;
if(ij==1)
{
TR0=1;//定时器0选通工作
}
else if(ij>1)
{
TR0=0;//定时器0关闭工作
timeH=TH0;
timeL=TL0;
time=timeH;
time=time<<8;
time=time|timeL; //将定时的值存进time
}
}
void main()
{
if(k==0)
{ init();}
}
//设置int0下降沿触发,等下降沿来的时候,开始让T0计时
void init()
{
TMOD=0x01; //定时器0, 工作方式1, 16位计数
TCON=0x01; //INT0下降沿触发 , INT1低电平触发
TH0=0x00; //初始化定时器0
TL0=0x00;
EA=1; //开全中断
ET0=1; //开放T0中断
ET1=1; //开放T0中断
EX0=1; //开放INT0
++k;
}
|
|