外部中断频率测量救助
//定时2.5MS,外部输入脉冲频率约80KHZ左右,用在2.5MS内有多少外部输入中断来计算输入脉冲的个数,//现在的问题时显示不了外部中断输入脉冲的个数,不知道问题出在哪里,是不是外部中断的速度达不到9US左右?
//救助大家指导一下
void Timer0Init(void) //2.5MS@24.000MHz
void Timer0Init(void) //2.5MS@24.000MHz
{
AUXR |= 0x80; //¶¨Ê±Æ÷ʱÖÓ1Tģʽ
TMOD &= 0xF0; //ÉèÖö¨Ê±Æ÷ģʽ
TL0 = 0xA0; //ÉèÖö¨Ê±Æ÷ ³õÖµ
TH0 = 0x15; //ÉèÖö¨Ê±Æ÷ ³õÖµ
TF0 = 0; //Çå³ýTF0±êÖ¾
TR0 =0; //¶¨Ê±Æ÷0¼ÆÊý
ET0 = 1; //?????0
TR0 =1; //???0????
//P32=1; //??????
IT0 = 1; //??INT0????(1:??? 0:???????)
EX0 = 1; //??INT0??
EA = 1;
}
void tm0_isr() interrupt 1 using 1
{
EX0 = 0; //½ûÖ¹INT0ÖжÏ
TR0 =0;
t5= (long int)(((n*10)/25)*100);//¼ÆËãÆµÂÊ
//displaydata(t5,0,0,0,0);
delay6();
//n=0;
EX0 = 1;//ʹÄÜINT0ÖжÏ
TR0 =1; //Timer0 Run
}
void exint0() interrupt 0 //ÍⲿÖжÏ0INT0
{
n++;
}
void main()
{
P1M0 = 0x00; //1.01234567 power put
P1M1 = 0x00;
P3M0 = 0x7F; //3.23456 power put
P3M1 = 0x80;
P36 = 1;//CS
P33 = 1;// DATA
P31 = 1;// WR
P37 = 0; //TSS1
n=0;
delay3();
Init_1621();
delay2();
HT1621_all_on();
delay7();
HT1621_all_off() ;
Timer0Init( );
t5=0;
while (OK)
{
displaydata(n,0,0,0,0);//ÓÐÕâ¸ö¾ÍÒ»Ö±ÏÔʾ0,Èç¹ûÆÁ±ÎÄÇôÆÁʲôҲ²»ÏÔʾ
}
}
附件是定时器产生中断信号,外部中断计数,串口打印计数值的例子,请参考。
乘风飞扬 发表于 2023-5-8 13:09
附件是定时器产生中断信号,外部中断计数,串口打印计数值的例子,请参考。
...
谢谢
页:
[1]