Ответ: В дисплее WinStar черные квадратики
У меня с новым дисплеем это работает
inline void DisplayCtrlWrite(unsigned char byte) {
unsigned char sreg;
sreg = SREG; __disable_interrupt();
ResetBitsPort(CTRL2_PORT,MASK_DRS); // Установить состояние линии DRS - 0
WritePort(IODATA_DIR,0xFF); // Направление на выдачу
WritePort(IODATA_PORT,byte); // Данные на выдачу
ResetBitsPort(CTRL2_PORT,MASK_DEN); // Установить состояние линии DEN - 0
if(byte == 1) _delay_mks(50);
SetBitsPort(CTRL2_PORT,MASK_DEN |MASK_DRS); // Установить DRS - 1 DEN - 1
WritePort(IODATA_DIR,0x00); // Направление на прием
SREG = sreg;
return;
}
То есть я
1) убрал строку SetBitsPort(CTRL2_PORT,MASK_DRS); // Установить состояние линии DRS - 1
2) поставил 50 мкс (с 20 не работает - иногда на пустых позициях загораются случайные одинаковые символы после очистки экрана)
3) добавил запрет прерываний (как это было написано в исходной функции)
|