LOZHEN 发表于 2023-5-8 10:20:34

外部中断频率测量救助

//定时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:44

附件是定时器产生中断信号,外部中断计数,串口打印计数值的例子,请参考。

LOZHEN 发表于 2023-5-8 13:16:45

乘风飞扬 发表于 2023-5-8 13:09
附件是定时器产生中断信号,外部中断计数,串口打印计数值的例子,请参考。
...

谢谢
页: [1]
查看完整版本: 外部中断频率测量救助