реализовываю этот проект а Си)но выводит что то непонятное, в чем ошибка?
- Код: Выделить всё • Развернуть
/*****************************************************
Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 16,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
*****************************************************/
#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __lcd_port=0x16; PORTB
#endasm
#include <alcd.h>
#define ADC_VREF_TYPE 0x00
unsigned int read_v=0; //содержит результат преобразования для volt_adc(0) 0-1023
unsigned int result_v=0; //фактический показ на lcd 255 (число символов ASCII) для десятичной записи
unsigned int read_adc(unsigned char adc_input){
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void print(int number) {
int sz = 0, i;
char ch[100];
while (number > 0) {
ch[sz++] = number % 10;
number /= 10;
}
for (i = 0; i < sz/2; ++i) {
char x = ch[i];
ch[i] = ch[sz - i - 1];
ch[sz-i-1] = x;
}
lcd_gotoxy(0,1);
lcd_puts("ADC0=");
lcd_gotoxy(5,1);
lcd_puts(ch);
}
void main(void){
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: Int., cap. on AREF
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x87;
lcd_init(16); // Инициализация ЖКИ на 16 символов
lcd_gotoxy(0, 0);
lcd_putsf ("volt_adc(0)");
delay_ms(3000);
lcd_clear();
read_v=read_adc(0);
result_v=read_v;
print(read_v);
delay_ms(3000);
lcd_clear();
while (1){
read_v = read_adc(0);
lcd_gotoxy(0,1);
print(read_v);
delay_ms(100);
}
}