Всем привет
Необходимо выводить информации на дисплей, при вращении энкодера, то есть считывать его состояние.
Но при симуляции в протеус, выводимые цифры на дисплей меняются то в положительную или отрицательную сторону, пропуская чередующию цифру.
Вот код который у меня получился:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include "LCD.h" //Хедер для LCD дисплея
#include "LCD.c"
int buf, data, input;
int main(void)
{
char angle_antenna, symbol_antenna, lcd_angle_antenna[5];
angle_antenna = "000"; //
symbol_antenna = "\xDFY"; // Символ целсия
data = 0;
LCDinit(); //Инициализация LCD, эту функцию в первую
//очередь, потом все остальное.
while(1)//Главный цикл программы.
{
input = PINC & 0x03;
if(buf != input)
{
switch(buf)
{
case 0:
{
if(input == 2) data++;
if(input == 1) data--;
break;
}
case 1:
{
if(input == 0) data++;
if(input == 3) data--;
break;
}
case 2:
{
if(input == 3) data++;
if(input == 0) data--;
break;
}
case 3:
{
if(input == 1) data++;
if(input == 2) data--;
break;
}
}
buf = input;
itoa(data,lcd_angle_ antenna,10);
}
LCDstring(lcd_angle_ antenna,0,0); //Текущий угол антенны
}
}
Добавлено через 23 минут(ы):
Разобрался)) немного не так подключил протеус