//AD转换实验 调节AD0处的滑动变阻器,PB口的led随之变化
//小灯是低电平点亮
//硬件操作:将PB处的短路帽0到7都插上,将PC处的短路帽A0插上
#i nclude <mega8.h> //头文件
#i nclude <delay.h> //引用系统自带的延时函数
#define u8 unsigned char
#define u16 unsigned int
//中断向量的对应入口
#define ADC_VREF_TYPE 0x60
bit i=0;
//AD中断函数
interrupt [ADC_INT] void adc_isr(void)
{
i=1; //将i置位,则返回主程序后 跳出while循环
}
void init(void)
{
//IO初始化
PORTB=0XFF;
DDRB=0XFF;
//ad转换相关的寄存器的初始化
ACSR=0x80; //别忘了关掉模拟比较器的电源哦
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x8F;
#asm("sei") //使能全局中断函数
}
void main(void) //主函数
{
init();
while (1)
{
i=0;
ADCSRA|=1<<6; //启动一次AD转换
while(i==0)
{
;
}
PORTB=~ADCH;
delay_ms(200);
}
}