Микроконтроллеры | Ликбез по программированию PIC |
|
---|---|---|
Разобрался почему глючила прошивка SAK'a. Он не включил в листинг директиву CONFIG |
|
|
Различия между 628 и 628А: Splav56, Вы правы, тут причина в конфигурации. Поэтому лучше задавать слово конфигурации в программе. Наглядный пример того, о чём я уже упоминал. SAK, мне, признаться, не вполне понятен этот фрагмент: org 20h Почему сделано именно так? Обычно ведь используют EQU или cblock. Splav56, какие дальнейшие планы? Предлагаю тщательно проанализировать программу с подробными разъяснениями для тех, кому что-либо неясно. А также научиться использовать симулятор MPLAB с имитацией внешних воздействий (нажатий на кнопки). Так, чтоб работа программы была хорошо видна. Кстати, я TEMP разместил по адресу 073h случайно. Это совсем не ошибка, это моё право. Просто логичнее было бы разместить по адресу 072h, подряд. Особенности адресов 070h - 07Fh всем понятны? (см. стр.15 даташита) |
|
|
Splav56: Разобрался почему глючила прошивка SAK'a. Он не включил в листинг директиву CONFIG picmaniac: org 20h TEMP res 1 Почему сделано именно так? org 0Ch __BeginInitData res 0 ; Начало области инициализации данных __EndInitData res 0 ; конец области инициализации данных Если теперь захотим перенести эту программу на PIC16F628 достаточно поменять org 0Ch на org 20h. |
|
|
Ясно. Обычно в MPASM испольуется cblock в таких случаях. |
|
|
picmaniac: Предлагаю тщательно проанализировать программу с подробными разъяснениями для тех, кому что-либо неясно. А также научиться использовать симулятор MPLAB с имитацией внешних воздействий (нажатий на кнопки). Так, чтоб работа программы была хорошо видна. Это все уже пройденный для меня этап. И в MPLAB я Вашу программу, также как и SAK'a прогнал вдоль и поперек, в том числе и задавая асинхронные стимулы на pin'ы RB7:RB4. А иначе я не смог бы проверить правильность отработки алгоритма и понять почему моя программа часть алгоритма отрабатывала правильно (в части соответсвия загорания с/д нажатым клавишам), а часть нет - неправильно работале при нажатии более одной клавиши. Насчет использования РОН и их адресов я тоже в курсе. Сейчас добрался до модели этого алгоритма в Протеусе, схему нарисовал, файл загрузил, но не работает. . Видно где-то что-то не допер. Предлагаю в новой ветке (а может быть и здесь) пока смоделировать likbez01 в Протеусе, а остальные пока поработают над программой, а то только я и тренируюсь. Правда я не против одиночного обучения. |
|
|
Вот проект в Протеусе |
|
|
Я уже выкладывал проект для Proteus См. выше Ждём пожеланий от начинающих - надо ли объяснять подробно про имитацию нажатий кнопок в симуляторе? |
|
|
picmaniac: Я уже выкладывал проект для Proteus См. выше |
|
|
Как я говорил, эту же задачу можно (а внекоторых случаях будет и нужно) решить с использованием цикла. Операторов я много не сэкономил, но это потому что всего 4 кнопки и всего 4 комбинации, а если бы например задача стояла отображать HEX-код нажатых кнопок, экономия бы была очень даже существенная. За основу взял программу picmaniac ◊ , то что вставил я набрано бльшими буквами и на позицию табуляции меньше. В MPLab-е всё работает замечательно, на макете не проверял- до паяльника доберусь только в понедельник. |
|
|
Ну и как мы договорились, блок-схема того куска, который я изменил. Кстати в этой программке очень полезный приёмчик- считывание констант из памяти программ. Очень часто используется, например при выводе 7-сегментного кода на индикатор. Так что следующим шагом можно выводить код нажатых кнопок в виде HEX-цифр от 0 до F на знаковый 7-сегментный индикатор. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |