Доброго времени суток всем.
Люди посмотрите пожалуйста. Я написал следующий код, который должен выполнять двойной опрос АЦП с интервалом 5-10 секунд, и вывод данных на ЖК дисплей.
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <math.h>
char lcd_buffer1[31];
char lcd_buffer2[31];
unsigned int res1;
unsigned int res2;
void main(void){
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Gas sensor");
lcd_gotoxy(0,1);
lcd_putsf("Presentation");
delay_ms(10);
lcd_clear();
ADMUX=0b11001101;
ADCSRA=0b11011111;
res1=ADCW;
sprintf(lcd_buffer1,"ADC1=",res1);
lcd_gotoxy(0,0);
lcd_puts(lcd_buffer1);
delay_ms(10000);
ADCSRA=0b11011111 ;
res2=ADCW;
sprintf(lcd_buffer2,"ADC2=",res2);
lcd_gotoxy(0,1);
lcd_puts(lcd_buffer2);
while (1){
}
}
Но он почему-то вызывает ошибку. При выполнении АЦП преобразования в регистре SREG появляется следующее значение
00XXXXXX и программа прерывается.
Гляньте свежим взглядом...