⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad.c

📁 C8051F410上的一些调试好的程序
💻 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 + -