#include<iom88v.h>
#include<macros.h> //包含宏定义
#include<stdio.h>
//.......................................................
unsigned int get_ad(void);
void delay_ms(unsigned int);
void io_init(void);
//.............................................................................
void delay_ms(unsigned int i)
{
unsigned char b;
unsigned int a;
for (a = 1; a < i; a++) {
for (b = 1; b; b++) {
;
}
}
}
void io_init(void) {
//DDRB = 0xFF; /*方向输出*/
//PORTB = 0x00; /*低电平*/
DDRC = 0x0C; /*对应LED引脚为输出*/
PORTC = 0xF3; /*对应LED引脚输出低电平*/
//DDRD = 0x00; /*方向输入*/
//PORTD = 0xFF; /*打开内部上拉*/
}
unsigned char get_ad(void) {
unsigned char i;
ADMUX = (1 << REFS0) | (1 << ADLAR); /*基准AVCC、左对齐、通道0*/
ADCSRA = (1 << ADEN) | (1 << ADSC) | (1 << ADPS2); /*使能、开启、16分频*/////// 正确
while(!(ADCSRA & (1 << ADIF))); /*等待*/
i = ADCH; //正确
ADCSRA &= ~(1 << ADIF); /*清标志*/
ADCSRA &= ~(1 << ADEN); /*关闭转换*/
return i;
}
void main
{
delay_ms(200);
io_init();
while (1)
{
delay_ms(100); //应该延迟一分钟 每分钟查询一次,以后要进行改进 ??????????????????????? /*周期控制*/
i = get_ad(); /*获取电压*/
//ad_to_led(i); /*将电压值显示到LED上*/
}
}