/*本程序用AVR studio 编写;
基于mega8芯片,mega16芯片大同小异,选择ADC通道时有差别,具体看
mega8和mega16芯片资料。
B0口为输入,D口为输出。
*/
#include <avr/io.h>
#define uint unsigned int
void _delay_ms(uint ms) //随便写了一个延时函数,不准确,只要看到效果就行
{ uint i;
for (i=0;i<ms*10;i++)
for (i=0;i<ms*10;i++);
}
void Init_ADC()
{
ADMUX|=(0<<REFS1)|(1<<REFS0); //选择AVCC为ADC的参考电压
ADMUX|=(1<<ADLAR); //转换结果左对齐
ADMUX|=(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0); //选择通道ADC0
ADCSRA|=(1<<ADPS2)|(0<<ADPS1)|(1<<ADPS0); //时钟分频系数为64
ADCSRA|=(1<<ADEN); //使能A/D 转换
ADCSRA|=(1<<ADIE); //使能AD中断
//SREG|=0x80; //中断总使能
SFIOR &=0x0F;
}
int read_adc()
{ int adc = 0;
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载