[an error occurred while processing this directive]
|
Но там библиотека lcd.lib в исходнике и за 5 минут меняем немного кода в воде-выводе нибла ...
// -------------------------------------------------
// в программе обьявляем не одну, а две константы
#asm
.equ __lcd_port=0x15 ; порт управления
.equ __lcd_port_DATA=0x18 ; а это будет порт вывода данных
#endasm// -------------------------------------------------
// а это файл lcd.lib
// в обьявлении добавляем#asm
.equ __lcd_direction_DATA=__lcd_port_DATA-1
.equ __lcd_pin_DATA=__lcd_port_DATA-2
#endasm// и в месте вывода нибла делаем махонькую поправочку в тексте
static void _lcd_write_nibble(void)
{
#asm
andi r26,0xf0
or r26,r27
out __lcd_port_DATA,r26 ;write - ВОТ ТУТ МЕНЯЕМ НЕМНОГО
sbi __lcd_port,__lcd_enable ;EN=1
#endasm
_lcd_delay();
#asm
cbi __lcd_port,__lcd_enable ;EN=0
#endasm
_lcd_delay();
}
И далее по тексту в нескольких местах, где прямой вывод в порт на запись или чтение - вносим поправку. И работать можно на два порта будет.
НО НЕНУЖНО. КАКОЙ СМЫСЛ ЭТОГО ИЗВРАТА?
Если уж и переписывать библиотеку - так на вывод через SPI в регистр посл-параллельный на LCD - и все ноги свободны!
А чтение готовности с LCD это вааще понты :-)
E-mail: info@telesys.ru