/************转换结束进入中断处理***************/
#include
#define uchar unsigned char
#define uint unsigned int
uchar temph,templ;
void port_init()
{
DDRE=0XFF;
PORTE=0XFF;
DDRF&=(0<<0);
PORTF&=(0<<0);
}
void ad_init()
{
ADMUX=0x60;//参考电压A VCC,右对齐,ADC0口
ADCSRA=0x8e;//ADC使能,ADC中断使能,64分频
SREG=0x80;//打开总中断
}
uint read_data()
{
ADCSRA|=(1<<6);//开始ADC转换
while((ADCSRA&0x40)==0x40);//等待转换(转换过程中ADCS为1,结束为0)
//转换结束,跳到中断
return temph;
}
void main()
{
port_init();
ad_init();
uchar num;
while(1)
{
num=read_data();
PORTE=~(num);
}
}
#pragma vector=ADC_vect
__interrupt void ADC_server() {
templ=ADCL;//取值
temph=ADCH;
}