Самоучитель по программированию PIC контроллеров для начинающих (Е.А. Корабельников,2008). Самоучитель по программированию PIC контроллеров для начинающих. Система команд pic16F84A 26 Что такое программа иправила ее составленияПример создания программы автоколебательного мультивибратораДирективы.
![]()
|
1 2 Часть 1 Оглавление Введение 3 Готовим инструменты 5 Что такое микроконтроллер и как он работает 10 Система команд PIC16F84A 26 Что такое программа и правила ее составления Пример создания программы автоколебательного мультивибратора Директивы . 36 Интегрированная среда проектирования MPLAB IDE и работа в ней 45 Что дальше 70 Пример создания программы (начало) 72 Пример создания программы (продолжение) 96 Работа в симуляторе Отладка программы 107 Как отследить выполнение программы 121 11 Прерывания Стек Пример разработки программы с уходом в прерывания 134 Организация вычисляемого перехода Работа с EEPROM памятью данных 160 13 Флаги Работа с флагами Как работает цифровой компаратор Перенос и заем 182 Пример задействования флага С в трехбайтном суммирующем устройстве Циклический сдвиг Операция умножения 200 Введение в принцип построения подпрограммы динамической индикации Косвенная адресация 222 Преобразование двоичных чисел в двоично - десятичные Окончательное формирование текста подпрограммы динамической индикации 243 Принцип счета Работа с таймером TMR0. Принцип установки групп команд счета в текст программы 262 ………………………………………………………………… Заключение 277 Дополнительная информация 279 Количество страниц 287. 3 Введение Эпиграф : программист, работающий в ассемблере , должен быть "властелином колец. И еще : банальность это уставшая истина. поймете позднее ) В микропроцессорную технику люди приходят по- разному Лично я, до поры, до времени, не ощущал особой потребности в необходимости заниматься этим, пока, в один прекрасный момент, не понял, что начинаю не соответствовать времени То , что я наработал "до того ", оказалось безнадежно устаревшим, а также "смешно смотрящимся " и на "фоне " современной элементной базы, и на "фоне " тех знаний, которые нужно иметь для того, чтобы работать с ней Кроме того, лично для меня, как- тоне красиво и не достойно было "питаться объедками с царского стола ", если есть возможность "за него сесть на правах полноценного участника трапезы ". Нужно было выбрать либо "сложить лапки " и перейти в категорию постепенно "вымирающих " ( дисквалифицирующихся ), либо заняться этими "страшными и ужасными " микроконтроллерами, которые все более напоминали "в каждой бочке затычку ". Вымирать " совсем не хотелось, так что выбор был однозначным И тут началось нечто, что напоминало "передвижение по джунглям ". Информационный "бардак " в этом "секторе " оказался настолько впечатляющим, что "волосы встали дыбом ". А куда деваться "Отступать- то некуда, позади Москва ". Кстати, точно в таком же положении находятся сейчас многие люди (знаю по письмам, для которых "въезд " в микропроцессорную технику стал не то что какой- то "блажью ", а самой натуральной жизненной необходимостью, что вполне понятно, ведьм контроллеры входят в состав практически любой более или менее современной, малогабаритной (и не только) аппаратуры (а "чем дальше в лес , тем больше дров "...). Чего я натерпелся , знает только один Господь Бог : помощи никакой и пришлось рассчитывать только на свои силы После всех этих "мытарств ", возник закономерный вопрос "Это что же такое получается Неужели каждый, кто вознамерится "посягнуть " на эти "железяки ", должен обязательно "разбивать свой нос в кровь ", водя им по "батарее "? Неужели нельзя без этого обойтись или, по крайней мере, сделать этот процесс не столь болезненным Прикинул А ведь , ей Богу , можно Правда, придется "вспахать полене паханное ", но по совокупности причин, смысл в этом есть То , что Вы прочитаете в "Самоучителе, есть итог указанного выше болезненного процесса, преподнесенный "на блюдечке с голубой каемочкой ". Принцип преподнесения информации - максимальная степень " разжеванности ", так как "Самоучитель" предназначен именно для начинающих Одна из главных бед начинающих программистов - отсутствие системности в восприятии информации и ее "передозировка ", связанная с чрезмерным желанием побыстрее достигнуть желанной цели, без учета объективных факторов Такого рода желание, конечно же, похвально, но при отсутствии плановости, четко выраженных приоритетов и способности , на первых порах, сознательно ограничивать объем воспринимаемой информации только самой действительно необходимой, оно играет с человеком злую шутку В результате - "бардак " в голове , дезориентация в потоках информации ив худшем случае, сожаление о потраченном времени, хотя, по большому счету, все не так ужи суперсложно, как может показаться на первый взгляд Я вовсе не говорю, что это просто Поработать придется, но и пугаться совсем не стоит, так 4 как "не так страшен черт, как его малюют ". Еще одна беда - недооценка огромного значения знания и умения применения на практике стратегии и тактики "мозгового штурма ". Хотя и любой "мозговой штурм " полезен, но "мозговой штурм " программиста, имеющего хотя бы элементарное представление о его стратегии и тактике , гораздо эффективнее и действеннее , чем "судорожные действия " программиста, который этих представлений не имеет А ведь работа программиста это "сплошной мозговой штурм "!!! Мозги есть у всех , а вот со стратегией и тактикой этого "штурма " имеются большущие проблемы Можно ведь, сдуру, и "пулю схлопотать " (по сценарию типа "геройская смерть программиста "). В своей работе я исхожу из того, что мозги являются не только логической "машиной ", но и "вместилищем личности ". Последнее либо явно недооценивается, либо вообще не берется в рассчет авторами подобных моему "творений ", что есть огромнейший их просчет, сводящий на нет большую часть усилий Такого рода "однобокость ", носящая массовый характер, в большинстве случаев, приводит к тому , что информация воспринимается обучаемым как логически изощренное, интенсивное ( без чувства меры) и "беспросветное изнасилование автором его (обучаемого) мозгов ", с целью "глумления " над низким уровнем его подготовки и прямого или косвенного понижения " микроконтроллерной " самооценки Конечно же, во многом, это не соответствует действительности, но что поделаешь, такова естественная, подсознательная, защитная реакция психики нормального человека на большой массив информации, к эффективной работе с которым она неготова Для того чтобы понять огромный вред такого подхода к обучению , вспомните про Афганистан или Чечню и про участь тех необстрелянных и психологически неподготовленных ребят, которых "бросили в эту мясорубку ". Яне желаю Вам такой участии по этой причине, в "Самоучителе, предпринята своеобразная попытка постепенного "встраивания " нулей и единиц в личность (их "одухотворения ") и формирования некой "идеологии офицера программных воск " (боевого духа ", "стержня "), без которой любая "война " (программирование есть чисто мужское и "хулиганское " занятие с названием "война со своей бестолковостью ") проигрывается даже не начавшись и которая является главной основой любой эффективной "школы " обучения Сравнить мне нес чем, и поэтому я работаю на свой страхи рискНе судите меня строго, так как я работаю "с нуля " и "психологическим спецом " не являюсь Надеюсь на то, что другие авторы продолжат эту исключительно важную и "преступно " игнорируемую "психологическую тему ". Хочется верить, что при чтении "Самоучителя, Вы почувствуете, что такое доброжелательное и уважительное отношение к Вашему совсем нелегкому труду (по себе знаю, а Ваше подсознание не будет выдавать сигналов SOS об "изуверском изнасиловании мозгов ". Отдельно обращаюсь к "хулиганам ", "драчунами "задирам " (в обывательском понимании этих слов, "мозговая деятельность " которых явно выражена Вам ненужно объяснять, что значит "держать удар ", "уклоняться ", "давать сдачи ", и "фингалы " Вас не смущают По этой причине, программирование это, в первую очередь, Ваша "вотчина ", где Вы можете славно "поохотиться ". В программировании , агрессивность есть достоинство, а не недостаток Здесь можно, от души, интеллектуально "помахать кулаками " (ограничений нет, плюс, посворачивать шеи " многим достойным уважения "врагам " (ограничений нет, отчего, кстати, Вы однозначно получите большое удовольствие Итак , информация будет предоставляться в определенной последовательности и по принципу "от простого к сложному ". Прошу придерживаться этой последовательности и не переходить к следующим разделам без уяснения предыдущих Дело это неторопливое и не требующее суеты Все "валить в кучу " не буду, "перенапряг " также постараюсь не создавать "Самоучитель" рас читан на начинающих, но при этом предполагается, что они, как минимум, знают основы цифровой техники Выражаю искреннюю признательность тем людям, которые помогли в работе над этим учебником. 5 1. Готовим инструменты Микроконтроллеры (и вообще все процессоры) изначально понимают только машинные коды, то есть некую совокупность нулей и единиц Те , кто представляет себе работу счетчиков, регистров, триггеров и т д, сразу же поймет природу машинного кода Так как, среди электронщиков, таких людей большинство, тона мой взгляд, все они согласятся с такой аксиомой машинные коды полезны в "малых дозах ". А вот когда начинаются "большие дозы " (сложные устройства с десятками корпусов м / схем ), то "мозги начинают дымиться " даже у классных электронщиков, имеющих недюжинные способности В этом случае, самое неприятное заключается в том , что по мере роста схемотехнической сложности устройства, эффективность работы электронщика резко "падает ". Ив самом деле, сил и средств вкладывается "море ", а получается нечто не очень надежное, габаритное, сложное в изготовлении , энергоемкое и дорогое Чтобы "одним махом прихлопнуть " все эти проблемы, " яйцеголовые " и придумали сначала "большие " процессоры (то, что применяется в компьютерах ), а затем и "маленькие ", назвав их микроконтроллерами Внутри м / контроллера находится "набор " модулей, каждый из которых многофункционален Манипулируя весьма неслабыми возможностями этого "набора ", можно реализовать миллионы разновидностей устройств Естественно , всем этим "хозяйством " нужно как- то "рулить ". Эта "рулежка " и есть то, что называется программированием Если речь идет о больших "массивах " машинных кодов, то программирования напрямую (в машинных кодах) и врагу не пожелаешь удовольствия никакого, да, чего доброго, ив "психушку " попасть можно (есть исключения - люди с выдающимися способностями и гении ). Для того, чтобы обычные люди могли, без особого " напряга ", заниматься составлением программ, придуманы различные языки программирования Смысл всех их заключается в замене машинных кодов словами, сокращениями слов, абревеатурами и т д, то есть тем, что человеком легко и осмысленно воспринимается и чем он может комфортно оперировать при составлении текста программы Все эти "удобоваримые приятности ", по окончании составления текста программы, переводятся в машинные коды одним "легким движением руки " (мозги программиста не задействуются ). Чтобы это "легкое движение руки " имело место быть, " яйцеголовые " придумали так называемую "интегрированную среду разработки ". Это есть набор программ, в котором программист работает с максимальной степенью комфорта, причем, по всему "массиву " решаемых им задач (включая и составление текста программы, и т д и т п .). Что, первым делом, нужно сделать, например, русскому, который попал в Англию и собирается там жить Выучить английский язык При "въезде " в программирование , нужно сделать тоже самое (задача даже существенно проще. " Проматерь " всех языков программирования - ассемблер Хотя они считается самым простым, но слово "простой " относится прежде всего к набору его команд количество их - минимально необходимое, и тем не менее, вполне достаточное для решения самых сложных задач, ноне к комфортному восприятию их человеком Команды ассемблера являются либо сокращениями английских слов, либо набором первых букв английских словосочетаний, либо и тем , и другим Минимальный "джентльменский " набор ассемблера для ПИКов составляет 35 команд Реально же, наиболее часто, используются от 10 до 20 команд В дальнейшем , настройте себя просто на тупое заучивание (на первых порах) всей этой английской "абракадабры ", типа зубрежки (я вообще не имею никакой склонности к иностранным языкам, но ничего, освоил, не такая уж это и сложная задача, заверяю Вас В дальнейшем , Ваше образное мышление и зрительная память Вам помогут А выучить ассемблер очень даже стоит по причине того, что он, может быть, и не очень "удобоварим ", но именно на этом языке пишутся самые компактные по объему, быстрые и надежные программы, и по этой причине, серьезные программисты, работают 6 преимущественно в ассемблере Предупреждение : на этом этапе в ассемблер не лезть Всему свое время Пока достаточно общего представления (пусть "в мозгах уляжется "). Программы для ПИКов составляются преимущественно в ассемблере Даже если программа для них и составлена на языке более высокого уровня, тов конечном итоге, интегрированная среда разработки переведёт все в ассемблер Об интегрированной среде разработки (проектирования Она выполняет целый комплекс задач В ее специализированном текстовом редакторе, составляется текст программы Текст программы нельзя записывать в ПИК , так как он "понимает " только машинные коды Следовательно , нужно преобразовать текст программы, с языка ассемблер, в машинные коды То есть, необходимо так называемое ассемблирование (компилирование) исходного текста программы, которое производится все в той же интегрированной среде разработки Вот здесь- то начинающие обычно и путаются : словосочетание " ассемблирование исходного текста программы "означает не перевод исходного текста программы на язык ассемблер ( текст программы уже написан на языке ассемблера наоборот, преобразование текста программы, написанной на языке ассемблер, в машинные коды, которые сначала соответствующим образом архивируются и помещаются внутрь специального файла с расширением (форматом) .HEX (для удобства хранения и транспортировки машинных кодов, а затем разархивируются из HEX- файла и принимают свой исходный вид в программе , обслуживающей программатор С помощью этой программы, машинные коды программы записываются в ПИК Приведенное выше словосочетание, используемое сплошь и рядом , безусловно, не является удачным Обратите на это внимание и всегда имейте ввиду, что оно не отражает смысла происходящего, хотя я и буду употреблять его далее, так как оно является стандартным Я рассказал только о двух основных функциях интегрированной среды разработки Ее возможности ими далеко не исчерпываются Интегрированная среда разработки для ПИКов называется MPLAB_Эта_программа_(вернее_набор_программ)_создана_производителемПИКов,_то_есть_фирмой_Technology_Inc__.'>MPLAB Эта программа (вернее набор программ) создана производителем ПИКов , то есть фирмой Technology Inc . В России , представителем этой фирмы является ООО " Микро - Чип " , которое имеет в Интернете свой сайт технической поддержки на русском языке http://www.microchip.ru ( кстати , на этом сайте, в разделе "Начинающим ", есть ссылка намой сайт. 7 Лично я пользуюсь версией 5.70.40, что и Вам советую Это "старый, добрый конь, который борозды не испортит " и возможностей у него "выше крыши ". Главный недостаток этой версии - медленно работает (считает, но для начинающих, реактивной " скорости и не нужно Главное ее преимущество - надежность работы В более поздних версиях, в той или иной мере, осуществлен обмен скорости на надежность, что иногда не есть хорошо В дальнейшем , я буду ориентироваться на версию Примечание : дистрибутив MPLAB версии 5.70.40 (и еще 2 версии) имеется на компакт- диске Закачивать дистрибутив MPLAB нужно в папку с английским названием (папка мои документы или рабочий стол не подойдут, иначе будете иметь проблемы Лучше всего организовать ее в папке Program Files диска С Программа MPLAB является интегрированной средой разработки для ПИКов и содержит все необходимое как для написания и редактирования программы, таки для создания- файлов, а также и для отладки программы Таким образом, необходимость в наличии отдельного текстового редактора для написания программы, отдельной программы - ассемблера для создания HEX- файла и отдельного отладчика программы ( симулятора ) отпадает, так как в MPLAB все это есть (и даже более того. Установите MPLAB на свой компьютер, убедитесь, что она встала не "криво " и на время про нее забудьте, так как для того чтобы с ней работать, необходимо основательно подготовиться, чем в дальнейшем мы и будем заниматься Следующий шаг - сборка программатора, так как HEX- файл программы, созданный в, необходимо "превратить " в машинные коды, которые и будут записываться в ПИК ( так называемая "прошивка "). Ничего проще и надежнее чем программатор, я, на первом этапе, предложить не могу, хотя, безусловно, имеются и другие "достойные " программаторы Информацию по сборке программатора PonyProg Вы найдете в |