Я как-то задавал вопрос какие фьюзы, но ТС не читатель, ТС писатель, вопросы не зря задаются.
void write(uint8_t n)
{
n<<=4;
LCD_PORT&=~DATA; //удалить предыдущую отправку
LCD_PORT|=n; //выставить значение на пины управления дата битами
E1; //линию Е в 1
_delay_us(2); //пропуск такта
E0; //линию Е в 0
_delay_us(50);
}
Я бы вот эту функцию переписал следующим образом:
void write(uint8_t n)
{
n<<=4;
LCD_PORT&=n; //выставить значение на пины управления дата битами
E1; //линию Е в 1
asm("nop"); //пропуск такта
... // столько раз, чтобы высокий уровень "E" был >= 1 мкс
asm("nop"); //пропуск такта
E0; //линию Е в 0
LCD_PORT|=DATA; //между обращениями Dx = "1"
}
Рекомендуемые сообщения