智能车制作

标题: 求大神讲解一个程序,关于AD测频 [打印本页]

作者: xiao448735368    时间: 2013-7-27 10:40
标题: 求大神讲解一个程序,关于AD测频
主要是程序的前半部分正弦波转换方波的部分不是很理解
if((ADresult_latter-ADresult)<=1000)这句话里的1000是什么意思?是说正弦波最高点减去下一个信号的差吗?那为什么是1000?
以下是部分程序,求大神讲解

#include "common.h"
#include "include.h"
#include "HD7279.h"

extern volatile u32 LPT_INT_count;
extern volatile u8  pit_flag;

#define INT_COUNT  100
unsigned int i;
//u32 l,m,n,p,q,r,s,t,u,test;
void  main()
{
  u16 ADresult,ADresult_latter=0;
  adc_init(ADC1, SE16);
  gpio_init(PORTD,11,GPO,HIGH);  

  gpio_set(PORTD,11,HIGH);

  u16 count=0;
    DisableInterrupts;                                                         
    lptmr_counter_init(LPT0_ALT1, INT_COUNT, 2, LPT_Rising);                  //初始化脉冲计数器,用LPT0_ALT1,即PTA19输入,每隔INT_COUNT产生中断,延时2个时钟滤波,上升沿触发

    init_7279();
    send_byte7279(0xa4);//复位
    send_byte7279(0xbf);//测试
    for(i=0;i<50000;i++)
      long_delay();
    send_byte7279(0xa4); //复位

    pit_init_ms(PIT0, 1000);                                                   //定时 1秒 中断


  for(;;)
  {
    ADresult=ad_once(ADC1, SE16, ADC_16bit);
    if(ADresult_latter<ADresult)
      ADresult_latter=ADresult;
    else
      break;
  }

  EnableInterrupts;

  while(1)
  {
    ADresult=ad_once(ADC1, SE16, ADC_16bit);
    if((ADresult_latter-ADresult)<=1000)
    {
      gpio_set(PORTD,11,HIGH);
      long_delay();
    }
    else
      gpio_set(PORTD,11,LOW);
    if( pit_flag > 0 )                                                         
    {            
            count = LPTMR0_CNR;   //保存脉冲计数器计算值
              int x,a,b,c,d,e,f,g,h;
               x=LPT_INT_count * INT_COUNT +  count;
lptmr_counter_clean();            LPT_INT_count = 0;                                                 //清空LPT中断次数            pit_flag = 0;                                                      //清空pit中断标志位        }  }  





作者: xiao448735368    时间: 2013-7-27 19:46
肿么木有人....
作者: xiao448735368    时间: 2013-7-27 20:27
有没有人啊...




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2