Самоучитель по программированию PIC контроллеров для начинающих (Е.А. Корабельников,2008). Самоучитель по программированию PIC контроллеров для начинающих. Система команд pic16F84A 26 Что такое программа иправила ее составленияПример создания программы автоколебательного мультивибратораДирективы.
Скачать 3.49 Mb.
|
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 Вы найдете в |