Код: Выделить всё
#include <mega16a.h>
#include <delay.h>
#asm
.equ __lcd_port=0x12;
#endasm
#include <lcd.h>
#include <stdio.h>
#define ADC_VREF_TYPE ((0«REFS1) | (1«REFS0) | (0«ADLAR))
unsigned char volt;
char buffer [33];
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
delay_us(10);
ADCSRA|=(1«ADSC);
while ((ADCSRA & (1«ADIF))==0);
ADCSRA|=(1«ADIF);
return ADCW;
}
void main(void)
{ADMUX=ADC_VREF_TYPE;
ADCSRA=(1«ADEN) | (0«ADSC) | (0«ADATE) | (0«ADIF) | (0«ADIE) | (1«ADPS2) | (1«ADPS1) | (0«ADPS0);
SFIOR=(0«ADTS2) | (0«ADTS1) | (0«ADTS0);
lcd_init(16);
while (1)
{volt=read_adc(0)*0.029*5.00;
sprintf(buffer, "Volt=%i.%u", volt);
lcd_gotoxy(0,0);
lcd_puts(buffer);
delay_ms (500);
}
}