📄 ad.c
字号:
/* INCLUDE */
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908GZ60.h> /* include peripheral declarations */
#include "COMMON.h"
#include "AD.h"
#include "PROCESS.h"
/* Global Variables */
extern UINT8 ad_data[4];
extern UINT8 ad_channel[4];
extern UINT8 process_flag;
extern UINT8 adch;
UINT8 ad_data_temp[4];
/******************************************************************************
* Function: UINT8 AD_Sample(UINT8)
*
* Description: AD Sample
*
*
* Returns: Digitel
*
* Notes:
*
******************************************************************************/
UINT8 AD_Sample(UINT8 AD_Channel) {
ADSCR_ADCH = AD_Channel; //AD Channel selected
while (ADSCR_COCO == 0); //Wait until Convert complete
return (ADRL);
}
/******************************************************************************
* Function: interrupt Sample_Data(void)
*
* Description:
*
*
* Returns: none
*
* Notes:
*
******************************************************************************/
void interrupt Sample_Data(void) {
switch(adch) {
case 0:ad_data_temp[0]=ADRL;if(ad_data_temp[0]-ad_data[0]>6 || ad_data[0]-ad_data_temp[0]>6){
ad_data[0]=ad_data_temp[0];
}break;
case 1:ad_data_temp[1]=ADRL;if(ad_data_temp[1]-ad_data[1]>6 || ad_data[1]-ad_data_temp[1]>6){
ad_data[1]=ad_data_temp[1];
}break;
case 2:ad_data_temp[2]=ADRL;if(ad_data_temp[2]-ad_data[2]>6 || ad_data[2]-ad_data_temp[2]>6){
ad_data[2]=ad_data_temp[2];
}break;
case 3:ad_data_temp[3]=ADRL;if(ad_data_temp[3]-ad_data[3]>6 || ad_data[30]-ad_data_temp[3]>6){
ad_data[3]=ad_data_temp[3];
}Process_Data();break;
default:break;
}
adch++;
if(adch == 4) {
adch=0;
//process_flag=1;
ADSCR_AIEN = 0; //ADC interrupt disabled
} else if(adch<4) {
ADSCR_ADCH=ad_channel[adch];
}
__RESET_WATCHDOG();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -