📄 差分.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 + -