Свежие обсуждения
Микроконтроллеры

Ликбез по программированию PIC

1 26 99

Почитал ликбез1. Раньше не читал (обходил стороной), каюсь. :) Кое какие замечания для тех, кто будет читать и анализировать. А ведь именно для этого он (ликбез) и создавался.
1) Исчезла принципиальная схема учебного проекта. Единственная ссылка на нее, которую приводил picmaniac, не работает http://www.pic16.nm.ru/schema01.gif
2) Осталось не понятно, зачем все-таки нужен граф? Так упорно его все рисовали, а пользы я что-то не ощутил.
3) Рисование блок-схемы алгоритма до написания самой программы либо ограничивает фантазию при последующем написании программы, либо рисовать блок-схему надо уже после того, как примерно прикинул сам смысл будущей программы, либо вообще это надо делать параллельно.
4) Обидно и досадно, что вариант, предложенный ganом, так и остался без обсуждения. А вариант интересный и поучительный. Предлагаю обсудить.

 

Ответы на замечания по пунктам.
1. Схему восстановлю. Видимо, случайно удалил.
2. Граф позволяет лучше увидеть "подводные камни". На нем хорошо видны все возможные состояния автомата, пути перехода между ними, и условия, при которых эти переходы происходят. Всё это можно охватить "одним взглядом". Другое дело что правильно нарисовать его с непривычки сложно. Зато потом вся дальнейшая работа упрощается.
3. Тут каждый сам для себя выбирает вариант.
4. Слово предоставляется учаснегу Zandy :) Что именно желаете обсудить?

 

picmaniac: 4. Слово предоставляется учаснегу Zandy :)
Да вот тут накропал. Неоптимально, наверное, длинно, зато просто. Всего один цикл. Прошу указать на ошибки. Хотя в симуляторе работает. :) Может я зря там кучу команд перебрал: andlw, xorlw, comf, swapf? Может проще можно?
С портом, когда часть разрядов на вход работает, часть на выход, а мы считываем и записываем сразу весь байт, как то не совсем понятно. Если разряды на вход, а мы туда что-то записываем, может ли это где-то вылезти боком?

60107.asm

 

Не может, пока выводы на вход настроены, оба выходных транзистора закрыты. См. схемы портов в даташите. Вот когда на выход ногу переключим - тогда на ней записанные в защелки значения и появятся.
Схему http://www.pic16.nm.ru/schema01.gif восстановил.
Программа мне понравилась. Неплохо бы снабдить её хорошими комментариями, всё-таки для начинающих пишем. Да и тут рассказать подробнее про организацию таблиц.

 

Похоже, что можно ещё проще сделать. Вместо:
ss
movf PORTB,W
andlw B'11110000'
xorlw B'00001111'
movwf TEMP
comf TEMP,F
swapf TEMP,W
call table
movwf PORTB
goto ss
end

сделать так:

loop
swapf PORTB,W
andlw B'00001111'
call Table
movwf PORTB
goto loop
end

Только в этом случае таблицу переделать придётся.

ВСЕМ. Смотрите в файлообменнике на gmail статью о применении графов при проектировании микроконтроллерных устройств. Только что я её туда отправил. Пригодится.

 

picmaniac, спасибо, программу поправил по вашему совету (элементарно, Ватсон :) ), добавил подробные комментарии и выкладываю.
Рассказать про организацию таблиц мне сложновато, т. к. сам все делаю по наитию.

60176.asm

 

picmaniac, ваша инициатива и помощь по изучению пиков неоценима! Без ложной скромности хочу попросить еще пару, тройку каких-нибудь несложных заданий в асме. Знаете, чисто психологически самообучение как-то плоховато идет. Все-таки вариант: строгий преподаватель и бестолковый ученик веселее движет дело. Какая-то ответственность появляется что-ли. Может и люди еще подтянутся. Левон вот что-то затих. Левон, ау-у!
Можно конечно и самому придумать какую-нибудь задачку и тихо сам с собою..., но это не то, понимаете,... дела..., текучка всякая..., семья..., и т. д. А при народе-то стыдно будет сачковать. :)
Без лишней теории и рассусоливания. Типа: задание - разбор полетов.

 

Zandy: Левон, ау-у
Да тут я, тут... :) Сейчас я нахожусь в положении "студента", пропустившего несколько лекций... Придётся либо "списать", либо как-нибудь "обмануть" или "подкупить" преподавателей... :-D Но, хочется, всё таки изучить предмет. Поэтому ничего другого, как "помоги себе сам" не вижу! А сесть "за уроки" - то нет времени, то вдохновения... Вам всем, наверное знакомо такое чувство... Приходится это сознавать самому себе, как это ни прискорбно!
Но, вот только то, что я написал эти строки (повыше) ущемили моё же самолюбие, и прямо таки захотелось доказать себе обратное. Надо взять себя в руки! Литература у меня есть, нужно только выбрать время, когда ничего/никто не будет мешать процессу восприятия материала... Кстати, я твёрдо решил, что изучать буду PIC-и и ассемблер. Следующим будет "С" для PIC-ов. А дальше, если мне чего-то не будет хватать в PIC-ах перейду на AVR...
Извините, если кому-то показалось бредом то, что я написал выше. Нахожусь в здравом уме и твёрдой памяти! :)

 

Левон, приветствую! Давай порассуждаем - а так ли нужен ассемблер в современной радиолюбительской практике? (Вопрос с подковыркой) :\)+ С уважением, Николай.

 

Левон: в здравом уме и твёрдой памяти!
Да мы нисколько в этом не сомневаемся! Читайте, изучайте, и не стесняйтесь задавать вопросы - любые!
Если здесь не желаете спрашивать - пишите по мэйлу, мой адрес доступен каждому. Зимой побольше времени на контроллеры, так что будем продолжать.

Zandy: еще пару, тройку каких-нибудь несложных заданий в асме
Хорошо, я подумаю.