/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Professional
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
.hpinfotech.
Project :
Version :
Date : 30.07.2012
Author : Siamds
Company : Home
Comments:
Chip type : ATmega8
Program type : Application
Clock frequency : 1,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#include
#include
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
//******* Глобальные переменные *******
char lcd_buffer[33]; //Буфер обмена LCD
int ch_1; //Переменная хранения данных ADC0
int ch_2; //Переменная хранения данных ADC1
//********* Переменные ADC ***********
#define FIRST_ADC_INPUT 0 //Первый кнал ADC ADC0
#define LAST_ADC_INPUT 1 //Следующийй канал ADC ADC1
#define ADC_VREF_TYPE 0x00
unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1]; //Переменная хранения ADC данных
//*** Обслуживания прерывания для автоматического сканирования каналов ***
interrupt [ADC_INT] void adc_isr(void)
{
register static unsigned char input_index=0;
adc_data[input_index]=ADCW; //Чтение результата АЦП преобразования
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT)) //Селективный выбор
input_index=0; //следующего входа АЦП
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
delay_us(10); //Выдержка времени для стабилизации входного напряжения
ADCSRA |=0x40; //Старт АЦП преобразования
}
//******* Чтение результатов ADC преобразования *******
void adc_convers(void)
{
ch_1= adc_data[0]; //Запись в переменную ch_1 результата ADC 1-го канала
ch_2= adc_data[1]; //Запись в переменную ch_2 результата ADC 2-го канала
lcd_gotoxy(0,0);
sprintf(lcd_buffer,"ADC0 : %4d", ch_1);
lcd_puts(lcd_buffer);
lcd_gotoxy(0,1);
sprintf(lcd_buffer,"ADC1 : %4d", ch_2);
lcd_puts(lcd_buffer);
}
void main(void)
{
// Port B initialization
PORTB=0x00;
DDRB=0x00;
// Port C initialization
PORTC=0x00;
DDRC=0x00;
// Port D initialization
PORTD=0x00;
DDRD=0x00;
// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: AREF pin
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
ADCSRA=0xCB;
// LCD module initialization
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
adc_convers(); //Чтение результатов ADC преобразования
};
}