📄 ad.c
字号:
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#include "main.h"
unsigned int AD_val[15];
unsigned int AD_mid[15];
unsigned int AD_high[15];
unsigned int AD_low[15];
unsigned int ssb;
void init_AD(void){
/*AD Init*/
ATD0CTL2=0xc0; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
ATD0CTL3=0x40; // 每个序列4次转换, No FIFO, Freeze模式下继续转换
ATD0CTL4=0x86; // 8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1] ; PRS=3, divider=8
ATD0CTL5=0xB0; //右对齐无符号,duo通道采样,
ATD0DIEN=0x00; // 禁止数字输入
ATD1CTL2=0xc0; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
ATD1CTL3=0x40; // 每个序列4次转换, No FIFO, Freeze模式下继续转换
ATD1CTL4=0x88; // 8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1] ; PRS=3, divider=8
ATD1CTL5=0xB0; //右对齐无符号,duo通道采样,
ATD1DIEN=0x00; // 禁止数字输入
}
void Get_AD(void) {
AD_val[0]=ATD0DR0;
AD_val[1]=ATD0DR1;
AD_val[2]=ATD0DR2;
AD_val[3]=ATD0DR3;
AD_val[4]=ATD0DR4;
AD_val[5]=ATD0DR5;
AD_val[6]=ATD0DR6;
AD_val[7]=ATD0DR7;
AD_val[8]=ATD1DR0;
AD_val[9]=ATD1DR1;
AD_val[10]=ATD1DR2;
AD_val[11]=ATD1DR3;
AD_val[12]=ATD1DR4;
AD_val[13]=ATD1DR5;
AD_val[14]=ATD1DR6;
}
void Clear_AD(void) {
unsigned char i;
for(i=0;i<15;i++) {
AD_mid[i]=175;
AD_high[i]=0;
AD_low[i]=255;
}
ssb=0;
}
void Set_AD(void) {
unsigned char i;
Get_AD();
for(i=0;i<15;i++) {
if(AD_val[i]>AD_high[i])AD_high[i]=AD_val[i];
if(AD_val[i]<AD_low[i])AD_low[i]=AD_val[i];
if(AD_high[i]>AD_low[i])ssb|=(1<<i);
AD_mid[i]=(3*AD_high[i]+7*AD_low[i])/10;
}
showyellow(ssb);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -