美文网首页
EX15AVR ATmega8A ADC

EX15AVR ATmega8A ADC

作者: 山前雨1 | 来源:发表于2018-06-14 10:32 被阅读8次

//EX15AVR ATmega8A ADC//author:QI小米粥//data:2018.3.17//ADCL,ADCH读写顺序?选用外部的才行吗?#include#includeint a,b;

void init_io(void)

{

DDRB |=0X07;

PORTB |=0X07;

}

void init_adc(void)

{

/*

//E

ADMUX &=~BIT(7); //选择内部的AVCC的电压作为参考

ADMUX |=BIT(6);//

*/

ADMUX |=BIT(7); //选择内部的VREF的电压作为参考

ADMUX |=BIT(6);//内部电压需不需要使能1???

ADMUX |=BIT(5);//ADC内部的记录数据是右对齐的

ADMUX &=~0X08;//选择通道7

ADMUX |=0X07;

ADCSRA &=~0X07;//2分频

SREG |=BIT(7);//全局中断打开

ADCSRA |=BIT(3);//adc中断使能

ADCSRA |=BIT(5); //free running 模式实时更新

ADCSRA |=BIT(7);//ADC使能

ADCSRA |=BIT(6); //START ADC

}

#pragma interrupt_handler inter_adc:15

void inter_adc(void)

{

//D显示高三位,左对齐,需要更改ADMUX的bit5

a=ADCH/32;

PORTB=a;

/*

//C显示高三位右对齐

a=ADCH;

b=ADCL;

a=a*2+b/128;

PORTB =a;

*/

/*

//B只显示高两位,ADCL不先读

a=ADCH;

PORTB =a;

*/

/*

//A只显示高两位,ADCL先读出来

b=ADCL;

a=ADCH;

PORTB =a;

*/

}

void main(void)

init_io();

init_adc();

while(1);//这个循环可以省略,但是天狼星视频中加上了,一直在这里循环等待中断,

          //看着也比较合理。

}

相关文章

网友评论

      本文标题:EX15AVR ATmega8A ADC

      本文链接:https://www.haomeiwen.com/subject/nlbeeftx.html