注册会员
- 积分
- 106
- 威望
- 88
- 贡献
- 18
- 兑换币
- 45
- 注册时间
- 2013-7-12
- 在线时间
- 0 小时
- 毕业学校
- 北方
|
5贡献
主要是程序的前半部分正弦波转换方波的部分不是很理解
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中断标志位 } }
|
|