|
mrengineer Что означает __inline ? Реально ли из этого всего сварганить указанные выше writeLCD/readLCD? __inline или нечто похожее по написанию - указание компилятору, что вместо вызова этой функции нужно просто подставить ее код в генерируемую программу. Такие функции работают быстрее (нет затрат на вызов/передачу параметров/возврат), но, соответственно, увеличивают размер кода. Из именно этого сварганить код, может быть, и не получится, но функции - не бог весть какие сложные (по моим оценкам, минут на 10 писанины вместе с отладкой ). При условии, что изучите то, что caddr посоветовал |
|
|
По поводу одновременной записи 1 и 0 в порт читайте раздел Synchronous Data Output. И вообще отделите вопросы железа от вопросов программирования. Так станет значительно легче на них отвечать. Далее про "перемешанные порты"... Это Вы весма неудобно развели. ) Насколько мне известно "простого" решения нет. Тут два варианта: написать ф-ю конвертирования что-то вроде int ByteToLCD(unsigned char out) { int res=0; if (out & 0x01) res |= 0xYY; ... return res; } и обратную. Т.к. ЖКИ обычно не очень быстрые устройства и много в них писать не надо - это должно прокатить. Второй вариант - перекодирование по таблице. Несколько быстрее, но хавает ресурсы. И для обратного преобразования никак не подходит. Т.е. у Вас есть таблица, где для каждого значения на входе ЖКИ, есть состояние портов МК. Т.е. если у Вас ЖКИ подключен по 8 битам, то у вас будет unsigned int Table[256]; Но заполнять такую таблицу - жесть. |
|