| 
 
| 大家好,请问下PIC16F690单片机的输入捕获功能怎么使用?我根据手册配置,捕获到的频率不对。 
 待会贴代码:
 我使用波形发声器给CCP1引脚提供了一个266Hz的方波,读出来数据完全就稳不住。很乱,请问是什么原因?程序问题吗?思路就是计算两个上升沿之间的时间,得出来的时间五花八门,如下图,其中0x03是每组数据分隔符。
 
 void TMR1_Init(void) //定时器1初始化函数
 {
 T1CON=0x00;                  //16位计数,工作于定时方式,内部指令时钟(FOSC/4)
 TMR1IE= 0;                   //中断禁止
 TMR1IF= 0;
 TMR1H= 0;          //写定时初始值
 TMR1L= 0;
 TMR1ON=0;                    //关闭定时器TMR1
 }
 
 void CCP1_Init()//CCP1模块初始化
 {
 TRISC=TRISC|0X20;//RC5 IN
 CCP1CON&=0xF0;
 CCP1CON|=0x04;//CCP 工作于捕获模式,每个上升沿产生中断
 CCP1IE=1;//中断使能
 CCP1IF=0;//清中断标志位
 }
 
 void interrupt COMandTime1(void)
 {
 if(CCP1IF)
 {
 if(!intFlag)
 {
 intFlag=1;
 TMR1H= 0;          //写定时初始值
 TMR1L= 0;
 CCPR1H=0;
 CCPR1L=0;
 TMR1ON=1;
 }
 else
 {
 intFlag=0;
 TMR1ON=0;
 CCP1IE=0;
 newTime=CCPR1H;
 newTime=newTime<<8;
 newTime+=CCPR1L;
 TXBYTE(0x03);
 TXBYTE(newTime>>8);
 TXBYTE(newTime);
 }
 CCP1IF=0;
 CCP1IE=1;
 }
 }
 | 
 
×本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?注册 
  |