/*-----------------------------Sample.c----------------------------*/
#include "p30f6014a.h"
#define TRUE 1
#define FAILURE 0
unsigned char temp1[80];
unsigned long Va[64],Vb[64],Vc[64],Ia[64],Ib[64],Ic[64];
int i,ad_result;
int sample_count=0;//ad采样计数器
int sample_flag=FAILURE;//64点ad采样结束标志
void ad_init(void)
{
ADPCFG=0xfc03;//端口配置,清零为模拟引脚
ADCHSbits.CH0SA=0x03;//通道选择
ADCON3bits.ADCS=15;//转换时钟选择 8Tcy
ADCON1=0x00;//手动出发
//ADCON1bits.FORM=2;
//ADCON1=ADCON1|(1<<9);
//ADCON1=ADCON1|(1<<8);
ADCON2=0x00;//参考电压AVCC
ADCON1bits.ADON=1;//启动ADC模块
return;
}
void sample(void)
{
Nop();
if(sample_flag==FAILURE)
{
ad_result=0;
/*----------Chanel Va A/D----------*/
ADCHSbits.CH0SA=0x03;//通道选择Va
ADCON1bits.SAMP=1;//启动采样
for(i=0;i<10;i++);//采样等待
ADCON1bits.SAMP=0;//启动转换
while(ADCON1bits.DONE==0);
//ad_result=ADCBUF0;
Va[sample_count]=ADCBUF0;
Nop();Nop();Nop();Nop();
/*----------Chanel Vb A/D----------*/
ADCHSbits.CH0SA=0x05;//通道选择Va
ADCON1bits.SAMP=1;//启动采样
for(i=0;i<10;i++);//采样等待
ADCON1bits.SAMP=0;//启动转换
while(ADCON1bits.DONE==0);
//ad_result=ADCBUF0;
Vb[sample_count]=ADCBUF0;
Nop();Nop();Nop();Nop();
/*----------Chanel Vc A/D----------*/
ADCHSbits.CH0SA=0x07;//通道选择Va
ADCON1bits.SAMP=1;//启动采样
for(i=0;i<10;i++);//采样等待
ADCON1bits.SAMP=0;//启动转换
while(ADCON1bits.DONE==0);
//ad_result=ADCBUF0;
Vc[sample_count]=ADCBUF0;
Nop();Nop();Nop();Nop();
/*----------Chanel Ia A/D----------*/
ADCHSbits.CH0SA=0x04;//通道选择Va
ADCON1bits.SAMP=1;//启动采样
for(i=0;i<10;i++);//采样等待
ADCON1bits.SAMP=0;//启动转换
while(ADCON1bits.DONE==0);
//ad_result=ADCBUF0;
Ia[sample_count]=ADCBUF0;
Nop();Nop();Nop();Nop();
/*----------Chanel Ib A/D----------*/
ADCHSbits.CH0SA=0x06;//通道选择Va
ADCON1bits.SAMP=1;//启动采样
for(i=0;i<10;i++);//采样等待
ADCON1bits.SAMP=0;//启动转换
while(ADCON1bits.DONE==0);
//ad_result=ADCBUF0;
Ib[sample_count]=ADCBUF0;
Nop();Nop();Nop();Nop();
/*----------Chanel Ic A/D----------*/
ADCHSbits.CH0SA=0x08;//通道选择Va
ADCON1bits.SAMP=1;//启动采样
for(i=0;i<10;i++);//采样等待
ADCON1bits.SAMP=0;//启动转换
while(ADCON1bits.DONE==0);
//ad_result=ADCBUF0;
Ic[sample_count]=ADCBUF0;
Nop();Nop();Nop();Nop();
sample_count++;
if(sample_count>63)
{
Nop();
sample_count=0;
sample_flag=TRUE;
}
}//end ad do ifnot
Nop();
return;
}
dsPIC30F6014A 64点采样程序
最新推荐文章于 2022-05-13 14:26:42 发布