Занимаюсь самоизучение микроконтроллеров.
Как в данный код параллельно порту РС0 прописать второй код РС1 или РС2
ACSR=0x80;
SFIOR=0x00;
ADMUX=0;
ADCSRA=0x85;
ADCSRA |= 0x40;
data = ADCW;
L = (float) data*0.01953125;
ADMUX=1 (нужное число см. в таблице в даташите)kk042fjv писал(а):А как теперь на другой порт переключится?
Код: Выделить всё
ADCSRA=0x85; //настроили АЦП
// LCD module initialization
lcd_init(16); //подключили ЖК
lcd_clear(); //стерли
while (1)
{
static unsigned char port=0; // переменная для мультиплексора порта
ADMUX=port; //подключили порт
if(++port > 7) port=0; // подготовили переменную для следующего порта (в данном случае все от 0 до 7)
delay_ms(20);
ADCSRA |= 0x40; // запустили преобразование
while((ADCSRA&(1<<ADIF)) == 0); // ждем окончания преобразования
ADCSRA |= (1<<ADIF); // сбросили флаг готовности
data = ADCW;
L = (float) data*0.01953125;
sprintf(string, "Rashod %1.1f ",L);
lcd_gotoxy(0,0);
lcd_puts(string)Код: Выделить всё
float L;
...
L = (float) data*0.01953125;
Код: Выделить всё
uint16_t L;
...
L=(5*ADCW)/1024;
Код: Выделить всё
uint16_t L;
...
L=(50*ADCW)/1024;
Код: Выделить всё
#include <mega8.h>
#include <stdio.h>
#include <alcd.h>
void main(void)
{
unsigned short data;
char string[17];
lcd_init(16);
lcd_clear();
ADCSRA=0x85;
while (1)
{
static unsigned char port=0;
ADMUX=port;
ADCSRA |= 0x40;
while((ADCSRA&0x10) == 0);
ADCSRA |= 0x10;
data = ADCW*50/1023;
sprintf(string, "%d.%d", data/10, data%10);
lcd_gotoxy(5,port);
lcd_puts(string);
if(++port > 1) port=0;
}
}я писал(а): одно и тоже значение просто выводится по очереди то в одну строку, то в другую