dsPIC30F6014A 64点采样程序

/*-----------------------------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;
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iCxhust

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值