📄 ad.c
字号:
#include "C8051F410.h"
#include "init.h"
#define TMER3ENABLE() ( TMR3CN |= 0x04 );
#define TMER3DISABLE() ( TMR3CN &= 0xFB );
#define AD0ENABLE() (AD0EN = 1);
unsigned char xdata AD_data[20];
unsigned int currADsam;
void AD_sam(unsigned int samnum);
void AD_init();
void stopdog();
void main()
{
Init_Device();
EA = 1;
AD_sam(20);
while(1);
}
/******************************************************
DA采样
采样频率:2560
采样数据缓冲区:unsigned char xdata AD_data[4096]
采样点数为:2048
注意采样前一定要关闭看门狗,否则采样不完整
Dog的最长时间为210ms
而采样时间为800ms
采样数据指针为 unsigned int currADsam
初始值为: currADsam = 0 最大值为4098
*****************************************************/
void ADC0_ISR() interrupt 10 //
{
AD_data[currADsam] = ADC0H;
AD_data[++ currADsam] = ADC0L;
currADsam ++;
AD0INT = 0;
/* if( ADSamNo == 20 )
{
ADSamNo = 0;
TR3_disenable();
AD0EN = 0;
//AD0INT = 0;
EIE1 = 0x00;
}
*/
}
void AD_sam(unsigned int samnum)
{
currADsam = 0;
stopdog();
AD_init();
while(1);
//while(currADsam == samnum);
}
void stopdog()
{
PCA0MD &= ~0x40;
PCA0MD = 0x00;
}
void AD_init()
{
//************TIMER3*************************
TMR3RLL = 0x9B;
TMR3RLH = 0xFF;
TMR3L = 0x9B;
TMR3H = 0xFF;
//*************ADC***************************
ADC0MX = 0x03;
ADC0CN = 0x01;
ADC0TK = 0xF4;
//*************INTERRUPT*********************
TMER3ENABLE();
AD0ENABLE();
}
//*****************************************第1次修改*************************************************************************88
#include "C8051F410.h"
#include "init.h"
#define TMER3ENABLE() ( TMR3CN |= 0x04 );
#define TMER3DISABLE() ( TMR3CN &= 0xFB );
#define AD0ENABLE() (AD0EN = 1);
unsigned char xdata AD_data[20];
unsigned int currADsam;
unsigned int samno;
void AD_sam(unsigned int samnum);
void AD_init();
void stopdog();
void main()
{
Init_Device();
EA = 1;
AD_sam(10);
while(1);
}
/******************************************************
DA采样
采样频率:2560
采样数据缓冲区:unsigned char xdata AD_data[4096]
采样点数为:2048
注意采样前一定要关闭看门狗,否则采样不完整
Dog的最长时间为210ms
而采样时间为800ms
采样数据指针为 unsigned int currADsam
初始值为: currADsam = 0 最大值为4098
*****************************************************/
void ADC0_ISR() interrupt 10 //
{
AD_data[currADsam] = ADC0H;
AD_data[++ currADsam] = ADC0L;
currADsam ++;
samno ++;
AD0INT = 0; //ADC0转换结束标志
/* if( ADSamNo == 20 )
{
ADSamNo = 0;
TR3_disenable();
AD0EN = 0;
//AD0INT = 0;
EIE1 = 0x00;
}
*/
}
void AD_sam(unsigned int samnum)
{
currADsam = 0;
samno = 0;
stopdog();
AD_init();
//while(1);
//while(samno != samnum);
}
void stopdog()
{
PCA0MD &= ~0x40;
PCA0MD = 0x00;
}
void AD_init()
{
//************TIMER3*************************
TMR3RLL = 0x9B;
TMR3RLH = 0xFF;
TMR3L = 0x9B;
TMR3H = 0xFF;
//*************ADC***************************
ADC0MX = 0x03;
ADC0CN = 0x01;
ADC0TK = 0xF4;
//*************INTERRUPT*********************
TMER3ENABLE();
AD0ENABLE();
EIE1 = 0x08; //ADC0中断允许标志
AD0INT = 0; //ADC0转换结束标志
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%第二次修改%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#include "C8051F410.h"
#include "init.h"
#define TMER3ENABLE() ( TMR3CN |= 0x04 );
#define TMER3DISABLE() ( TMR3CN &= 0xFB );
#define AD0ENABLE() (AD0EN = 1);
#define AD0DISABLE() (AD0EN = 0);
unsigned char xdata AD_data[200];
unsigned int currADsam; //当前数据计数器
unsigned int samno; //当前采样计数
void AD_sam(unsigned int samnum);
void AD_init();
void stopdog();
void main()
{
Init_Device();
EA = 1;
AD_sam(100);
while(1);
}
/******************************************************
DA采样
采样频率:2560
采样数据缓冲区:unsigned char xdata AD_data[4096]
采样点数为:2048
注意采样前一定要关闭看门狗,否则采样不完整
Dog的最长时间为210ms
而采样时间为800ms
采样数据指针为 unsigned int currADsam
初始值为: currADsam = 0 最大值为4098
*****************************************************/
void ADC0_ISR() interrupt 10 //
{
AD_data[currADsam] = ADC0H;
AD_data[++ currADsam] = ADC0L;
currADsam ++;
samno ++;
AD0INT = 0; //ADC0转换结束标志
}
void AD_sam(unsigned int samnum)
{
currADsam = 0;
samno = 0;
stopdog();
AD_init();
//while(1);
while(samno != samnum); //等待转换结束
EIE1 = 0x00; //ADC0 中断屏蔽
AD0DISABLE(); //AD0EN关断
TMER3DISABLE(); //关闭timer3
}
void stopdog()
{
PCA0MD &= ~0x40;
PCA0MD = 0x00;
}
void AD_init()
{
//************TIMER3*************************
TMR3RLL = 0x9B;
TMR3RLH = 0xFF;
TMR3L = 0x9B;
TMR3H = 0xFF;
//*************ADC***************************
ADC0MX = 0x03;
ADC0CN = 0x01;
ADC0TK = 0xF4;
//*************INTERRUPT*********************
TMER3ENABLE();
AD0ENABLE();
EIE1 = 0x08; //ADC0中断允许标志
AD0INT = 0; //ADC0转换结束标志
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -