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

📄 差分.h

📁 利用AT16的A/D转换功能,测量两点电位差
💻 H
字号:

long table[],he;//用于存放所转换而得到的数值
long value=0;
unsigned char gao,number,k,di;

/*******************************************************/
/******   函数名称: port_init()                   ******/
/******   功    能: I/o端口初始化                 ******/
/******                                           ******/
/******   返回值  :    无                          *****/
/******   参    数:    无                          *****/
/*******************************************************/
void port_init(void)
{

DDRA&= ~(1<<0);
DDRA&= ~(1<<1);

}
/*******************************************************/
/******   函数名称: adc_init()                    ******/
/******   功    能:  ADC初始化                    ******/
/******                                           ******/
/******   参    数:   无                          ******/
/******   返回值  :   无                          ******/
/*******************************************************/
void adc_init(void)
{
ADCSRA = 0x00; //屏蔽ADC
ADMUX = 0xd0;  //ADC0.ADC1差分输入,未处理,右对齐,1#增益,内部基准电压
ACSR=(1<<ACD);// 关闭模拟比较器
ADCSRA=0xcf; // ADC使能,取消连续转换模式,中断使能,分频因子为128 

}
/*******************************************************/
/******   函数名称:init_devices()                 ******/
/******   功    能: 所有功能的初始化              ******/
/******                                           ******/
/******   参    数: 无                            ******/
/******   返回值  : 无                            ******/
/*******************************************************/
void init_devices(void)
{
CLI(); //关闭所有的中断
port_init();//IO口的初始化
adc_init();//ADC的初始化
SEI();//开启所有的中断
}


#pragma interrupt_handler adc_isr:15
void adc_isr(void)
{ //Beep_n(1);
  di=ADCL;
  gao=ADCH;
if((ADCH&0x02)==0x02)//假如为负数
 {
  table[number]=ADC&0x1FF;
  table[number]=~table[number];
  table[number]+=1;
  table[number]=table[number]*(-1);
 }
 else 
 {
   table[number]=ADC&0x1FF;
  }
  number++;
if(number==10)
  {
   for(k=0;k<10;k++)
  {
    he+=table[k];
  }
  value=256-((he*256/10)>>9);
 
  number=0;
  he=0;
  }

   ADCSRA|=(1<<ADSC); // ADC使能,取消连续转换模式,中断使能,分频因子为128 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -