Микроконтроллеры | Ликбез по программированию PIC |
|
---|---|---|
gan: когда прога приближается к 1000 команд и в ней море переходов, условных-безусловных- с прямой- косвенной адресацией- кучей подпрограмм, а метки переходов в самых разных концах picmaniac: Седьмую пока не пробовал, не вижу надобности. |
|
|
ОК! Я тоже голосую за версию алгоритма предложенную SAK'om. Но тогда просьба к SAK'y: |
|
|
Ну не надо присваивать мне чужие идеи, ведь этот алгоритм фактически предложен picmaniac'ом, а я только совсем чуть-чуть его изменил. Но раз народ требует. Инициализация представляет собой отдельный блок с одним входом и одним выходом, потому я выделил его отдельно. Там происходит конфигурирование выводов на ввод/вывод, включение подтягивающих резисторов, ну и отключение компараторов для pic16f628, хотя последнее, наверное, и не особо нужно т.к. мы не используем порт A. В основном алгоритме после инициализации задаётся начальное значение для вывода в порт B, а дальше начинается бесконечный цикл в котором выводится подготовленное значение W в порт B для обновления состояния светодиодов, читается значение того же порта для определения состояния кнопок, обнуляются биты не относящиеся к кнопкам, полученное значение последовательно сравнивается с заданными значениями для нахождения нажатой кнопки. Далее в зависимости от состояния кнопок в W попадает новое значение для порта B и цикл начинается сначала. Собственно, во всём алгоритме уже нет ничего нового уже всё было описано ранее и я не знаю что ещё можно добавить. Слов уже написано больше чем их будет в программе . Обычно в таких случаях я предпочитаю отвечать на возникающие вопросы, чем описывать каждый шаг. |
|
|
как выглядит в коде конфигурирование портов? включение подтягивающих резисторов? вообще в пике по умолчанию всё включено? (таймеры, юсарты, и пр.) или выключено? если не трудно приведите пару строчек кода конфигурирование portB и включение подтягивающих резисторов. |
|
|
Конфигурирование порта В: Подключение подтягивающих резисторов порта В: |
|
|
semm: вообще в пике по умолчанию всё включено? (таймеры, юсарты, и пр.) или выключено? В руководстве по ПИКу есть специальная таблица регистров специального назначения, где указано что означает каждый бит и каково его значение после включения питания, сброса по разным причинам. Нужно ее распечатать и держать под рукой. А вообще лучше пользоваться таблицами из самоучителя, правда они для PIC16F84A, но различия нетрудно учесть. |
|
|
SAK: Но раз народ требует. Если всем всё понятно в алгоритме и он всех устраивает, то можем его утвердить и присоединить к ТЗ и схеме. |
|
|
picmaniac Я курсе насчёт #include <P16F628.inc, просто не стал грузить дополнительными операциями, чтоб было понятней и меньше шансов споткнуться на ровном месте. <b>Левон а не могли бы Вы написать ту же программу с комментариями Левон, я взял эту программу из аппноута AN526 (поищите на сайте Микрочипа), там описываются математ. операции, в том числе и эта см. APPENDIX H:BINARY (16-BIT) TO BCD LISTING, правда на английском но с блок-схемами, если всё-же будут вопросы, давайте заведём отдельную ветку, чтоб не раздувать эту. SAK: Это означает плохую структурированность программы |
|
|
gan: ":=" , "==", "!=". Не всем, наверное это будет понятно. |
|
|
Cегодня подвернулся случай и я уломал админа, чтобы он мне инсталлировал MPLAB. Версия 5.70.40. Столкнулся с той же фигней, что и semm. Обмануть удалось так: взял первый попавшийся файл с расширением .asm и поместил его в папку EXAMPLE MPLAB (там будут размещаться проекты). При создании нового проекта присоединил его как файл - источник. Система на компе - Вин 2000. Дома с ХР таких проблем не было. |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |