微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新手求助,求PIC16F877A测频率的程序!

新手求助,求PIC16F877A测频率的程序!

时间:10-02 整理:3721RD 点击:
想用PIC16F877A的CCP1模块做一个简易的频率计,但是自己的程序总是测不准,希望得到大神的帮助~

我有用887做过频率计,在30-100khz是准的,超过就不行了,你看看!
void main()
{
        Initial();
//        Buz();
        while(1)
        {
                while(!T0IF);//判断2.5ms到否
                T0IF=0;
                TMR0=0x64;
                OPTION_REG=0x03;        //2500=(256-TMR0)*16*Tosc*4
                keyscan();//
                display();/**/
                GIE=1;//
                TMR1ON=1;//
                Hpl=500000/T3;
                Dsbuf[0]=Hpl%10;
                Dsbuf[1]=(Hpl%100)/10;
                Dsbuf[2]=(Hpl/100)%10;
                Dsbuf[3]=(Hpl/1000)%10;
                Dsbuf[4]=Keycnt%10;
                Dsbuf[5]=(Keycnt%100)/10;
                Dsbuf[6]=(Keycnt/100)%10;
                Dsbuf[7]=(Keycnt/1000)%10;               
        }
}
void interrupt CCP1ZD()
{
        if(CCP1IF)
        {        CCP1IF=0;//
                cp1u.cp1buf[0]=CCPR1L;
                cp1u.cp1buf[1]=CCPR1H;
                Ccpbuf[Ccpcnt]=cp1u.Ccp;
                Ccpcnt++;
                if(Ccpcnt==2)
                        {        Ccpcnt=0;
                                if(Ccpbuf[1]>Ccpbuf[0])
                                        T3=Ccpbuf[1]-Ccpbuf[0];
                                else {T3=0xffff-Ccpbuf[0]+Ccpbuf[1];}
                        }               
                CCP1IF=0;//
        }
}

你好,你发的程序我看了,但是从主程序跟中断也看不出什么,你能把完整的程序发给我吗?万分感谢,我的邮箱是980765192@qq.com

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top