|
|
|
|
немного изменил алгоритм - сделал проверку нового состояния клавиатуры не по KeyResult, а по Number по старому при последовательности "*" -> "*" и "5" -> "5" выход из цикла опроса происходил три раза: код "*", затем код "5" с признаком нажатой "*" и затем еще раз код "5" уже без признака нажатой "*" в результате при однократном нажатии цифровой кнопки на выходе было "двойное" нажатие теперь та же последовательность нажатий даст два выхода из цикла: код "*" и затем код "5" с признаком нажатой "*" т. е., если в комбинации сначала отпустить "*" - код "5" повторно выведен не будет, но если сначала отпустить "5" - на выходе получим еще раз код "*" такое поведение осложняет использование "*" и "#" одновременно и как клавиши модификации цифровых клавиш (навроде Shift и Alt у компьютера), и как отдельные клавиши ("отмена" и "ввод"), хотя вроде на компьютере одновременное использование обоих вариантов тоже не делают теперь возможно стоит сделать граф, хотя на мой взгляд граф подходит далеко не для всех проектов, и к этому в том числе - в алгоритме нет устойчивых состояний, в которых устройство будет находиться до определенного события и скорее к ассемблеру (и модели в протеусе - предлагаю пока просто вывести KeyResult на 8 светодиодов, подключенных к PORTA)
|
|
|
... а в ответ тишина составил для себя техзадание по проекту "кодовый замок" - есть желающие посмотреть/проверить/покритиковать? правда не совсем уверен, что смогу реализовать все задуманное - попытался объединить свои требования к устройству с частью предложений Левона по мере того, как что-то будет получаться - код и модель для протеуса (а в будущем и схемы с фотографиями готового устройства выложу здесь же, если кого заинтересует) 43623.rar |
|
|
Имею опыт программирования USART, I2C и ADC на PICах с проверкой на практике. Могу поделиться. |
|
|
На асме или на С? |
|
|
Tarii: Могу поделиться. Ну и что же мешает Вам это сделать прямо сейчас.. ну, или, к примеру, днём? |
|
|
На асме или на С? - на асике любимом. Выложить все что понаписывал? (не путать с понаписивал) Дело в том, что есть во всех задачах маленькие "приколы", не знаю как их назвать. Некоторые из них даже на уровне рекламаций производителю PICов - во как! Пару раз мучался по несколько дней - хотелось бы избавить от этого остальных. |
|
|
Лучше на асме... Хотя, если сообщения будут раз в 2 недели, наверное трудно будет на них сосредоточиться... Tarii: не знаю как их назвать Обычно "их" называют "подводные камни". Я думаю, будет интересно! |
|
|
Есть проблема передачи данных через USART. Если делать все по инструкции от инженеров Microchip (http://ww1.microchip.com/downloads/en/DeviceDoc/usart.pdf) - работать не будет. Точнее будет, но передаваться будут не все байты, а через один. Проверка окончания передачи байта данных и возможности передачи следующего (по указаниям Microchip): BANKSEL PIR1 WaitTX: btfss PIR1, TXIF goto WaitTX Проверка идет по флагу TXIF (буфер TXREG пуст и можно передавать следующий байт). По не понятным причинам работает через раз!!! Каждый второй байт при этом теряется!!! Корректо работает только конструкция с проверкой флага окончания передачи последнего бита из сдвигающего регистра Transmit Shift Register (TSR) - флаг TRMT (TXSTA<1>): BANKSEL TXSTA WaitTX: btfss TXSTA, TRMT goto WaitTX |
|
|
up! Вот мой вариант подпрограммы для работы с клавиатурой (драйвера): http://www.pic16.nm.ru/likbez2/keybscan02.txt Теперь, вооружившись , не грех и продолжить. Предложение такое: - либо можем создать программу обработки полученной от предложенного драйвера информации и вывода её на индикатор (как вариант - программа на basic с ассемблерными вставками), - либо другую программу опроса клавиатуры и вывода результата на индикатор - с использованием basic-компилятора. Это будет тренировкой по освоению basic для PIC. |
|
|
picmaniac: - либо другую программу опроса клавиатуры и вывода результата на индикатор - с использованием basic-компилятора. Думаю это будет лучше. Можно сначала на PICBasic. Принцип будет понятен, а перенести на другую версию Basic'a будет уже не сложно. Или можно сразу на microBasic'e. Второй вариант даже предпочтительней, микровасик у меня и на работе инсталлирован. Только начнем с алгоритма.
|
|
|
|
|