?? 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 + -