Файл: Учимся программировать микроконтроллеры Pic на языке PicBasicPro (В.В. Хилинский, 2007).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 17.06.2025
Просмотров: 1758
Скачиваний: 8
В.Н. Хилинский
MicroCode Studio - программная среда для разработки и отладки программ на языке BASIC.
Примеры программ.
Справочник по командам PicBasic Pro.
Уфа 2007
2
Содержание |
||
Предисловие |
7 |
|
Введение |
8 |
|
Глава 1. PIC-микроконтроллеры |
10 |
|
Питание микроконтроллеров |
10 |
|
Сброс и перезапуск микроконтроллеров |
12 |
|
Регистры конфигурации |
14 |
|
Генераторы тактовых импульсов |
14 |
|
Порты ввода/вывода и регистры управления передачей |
16 |
|
данных |
||
Глава 2. Компилятор PicBasicPro |
17 |
|
Интерактивная среда разработки (IDE) - Microcode Studio Plus. |
18 |
|
Установка и настройка |
||
Интерактивная отладка программ (ICD) |
31 |
|
Программа MicroCode Loader |
34 |
|
Терминал последовательного порта (The Serial Communicator) |
34 |
|
Программа Easy HID Wizard |
36 |
|
Язык PicBasicPro |
36 |
|
Основные понятия и определения |
36 |
|
Идентификаторы |
36 |
|
Комментарии |
37 |
|
Переменные |
37 |
|
Псевдонимы |
38 |
|
Константы |
39 |
|
Символы |
40 |
|
Метки |
40 |
|
Массивы |
41 |
|
Математические операторы |
42 |
|
Умножение |
44 |
|
Деление |
44 |
|
Операторы сдвига |
45 |
|
Оператор ABS |
45 |
|
Оператор COS |
45 |
|
Оператор DCD |
46 |
|
Оператор DIG |
46 |
|
Оператор DIV32 |
46 |
|
Оператор MAX и MIN |
47 |
|
Оператор NCD |
48 |
|
Оператор REV |
48 |
|
Оператор SIN |
48 |
3
Оператор SQR |
49 |
|
Поразрядные операторы |
49 |
|
Операторы сравнения |
49 |
|
Логические операторы |
50 |
|
Некоторые замечания о стилях программирования |
51 |
|
Глава 3. Примеры программ |
52 |
|
Пример № 1 – Мигающий светодиод (Hello Word) |
52 |
|
Пример № 2. Работа с несколькими светодиодами |
54 |
|
Пример № 3. Взаимодействие с кнопкой |
58 |
|
Пример № 4. Аналого-цифровое преобразование |
60 |
|
Пример № 5. Управление сервомотором |
64 |
|
Пример № 6. Управление ЖКИ |
66 |
|
Пример № 7. Подключение 7 сегментного светодиодного |
71 |
|
индикатора |
||
Пример № 8. Работа с внутренней ЕЕПРОМ |
74 |
|
Пример № 9. Работа с внешней ЕЕПРОМ |
76 |
|
Пример № 10. Работа с 12 кнопочной клавиатурой |
79 |
|
Пример № 11. Создание музыки |
83 |
|
Глава 4. Команды компилятора PicBasicPro |
86 |
|
Команда @ |
88 |
|
Команда ADCIN |
89 |
|
Команда ASM…ENDASM |
89 |
|
Команда BRANCH |
90 |
|
Команда BRANCHL |
90 |
|
Команда BUTTON |
91 |
|
Команда CALL |
97 |
|
Команда CLEAR |
97 |
|
Команда CLEARWDT |
97 |
|
Команда COUNT |
97 |
|
Команда DATA |
98 |
|
Команда DEBUG |
99 |
|
Команда DEBUGIN |
100 |
|
Команда DISABLE |
100 |
|
Команда DISABLE DEBUG |
101 |
|
Команда DISABLE INTERRUPT |
101 |
|
Команда DTMFOUT |
101 |
|
Команда EEPROM |
102 |
|
Команда ENABLE |
103 |
|
Команда ENABLE DEBUG |
103 |
|
Команда ENABLE INTERRUPT |
103 |
|
Команда END |
104 |
4
Команда ERASECODE |
104 |
Команда FOR…NEXT |
104 |
Команда FREQOUT |
105 |
Команда GOSUB |
106 |
Команда GOTO |
107 |
Команда HIGH |
107 |
Команда HPWM |
108 |
Команда HSERIN |
109 |
Команда HSEROUT |
112 |
Команда HSERIN2 |
113 |
Команда HSEROUT2 |
114 |
Команда I2CREAD |
116 |
Команда I2CWRITE |
118 |
Команда IF…THEN |
121 |
Команда INPUT |
121 |
Команда LET |
122 |
Команда LCDIN |
122 |
Команда LCDOUT |
123 |
Команда LOOKDOWN |
125 |
Команда LOOKDOWN2 |
126 |
Команда LOOKUP |
127 |
Команда LOOKUP2 |
128 |
Команда LOW |
128 |
Команда NAP |
129 |
Команда ON INTERRUPT |
130 |
Команда OUTPUT |
131 |
Команда OWIN |
131 |
Команда OWOUT |
132 |
Команда PAUSE |
133 |
Команда PAUSEUS |
133 |
Команда PEEK |
135 |
Команда PEEKCODE |
135 |
Команда POKE |
135 |
Команда POKECODE |
136 |
Команда POT |
136 |
Команда PULSIN |
138 |
Команда PULSOUT |
138 |
Команда PWM |
139 |
Команда RANDOM |
140 |
Команда RCTIME |
140 |
Команда READ |
141 |
Команда READCODE |
141 |
Команда REPEAT…UNTIL |
141 |
5
Команда RESUME |
142 |
|
Команда RETURN |
142 |
|
Команда REVERSE |
142 |
|
Команда SERIN |
143 |
|
Команда SELECT…CASE |
145 |
|
Команда SERIN2 |
145 |
|
Команда SEROUT |
149 |
|
Команда SEROUT2 |
151 |
|
Команда SHIFTIN |
155 |
|
Команда SHIFTOUT |
157 |
|
Команда SLEEP |
158 |
|
Команда SOUND |
159 |
|
Команда STOP |
160 |
|
Команда SWAP |
160 |
|
Команда TOGGLE |
160 |
|
Команда WHILE…WEND |
161 |
|
Команда USBINIT |
161 |
|
Команда USBIN |
161 |
|
Команда USBOUT |
162 |
|
Команда WRITE |
162 |
|
Команда WRITECODE |
163 |
|
Команда XIN |
163 |
|
Команда XOUT |
164 |
|
Оператор DEFINE |
166 |
|
Некоторые замечания по поводу обозначения выводов |
169 |
|
микроконтроллеров |
||
Заключение |
171 |
|
Приложение 1. Однопроводный интерфейс или интерфейс |
172 |
|
“Micro-LAN”. |
||
Приложение 2. Протокол Х10 |
180 |
|
Подборка ссылок в INTERNET |
185 |
|
Литература |
186 |
6
Предисловие
Написать эту книгу меня побудило то обстоятельство, что до сегодняшнего дня в нашей стране еще не было выпущено книг, рассказывающих о программировании микроконтроллеров на языке BASIC. Хотя в Интернете, да и не только в нем многие интересуются этим.
Я сам занимаюсь электроникой довольно давно. За это время в этой отрасли техники произошли значительные изменения. Я начинал работать тогда, когда широко использовались транзисторы, пришедшие на смену электронным лампам. А на смену транзисторам уже начинали приходить микросхемы. Что в это время происходило за пределами СССР в области электронной техники, нам было неведомо (к большому нашему сожалению).
Внедрение в производство первых микро компьютеров в нашей стране началось в 80 годы прошлого века. Первые промышленные компьютеры были очень дорогими для обычного человека. Поэтому большинство радиолюбителей собирало на работе и дома самодельные компьютеры такие как «Специалист», «Радио 86 РК» и т.п. Вершиной радиолюбительских сборок стали компьютеры серии «Sinkler» на базе процессора Z80.
Играя на этих компьютерах и пытаясь создавать свои программы, любители начинали самостоятельно осваивать наиболее распространенный для этих компьютеров язык программирования - BASIC.
Эта книга предназначена для студентов и инженеров, занимающихся электроникой. Здесь они смогут найти ответы на вопрос, как и чем, программировать PIC-микроконтроллеры.
Книга разбита на три части. В первой части приводится очень краткое описание устройства и работы PIC-микроконтроллеров.
Во второй части описывается язык программирования PicBasicPro.
Третья часть содержит подборку практических примеров устройств на основе микроконтроллеров PIC, а также тексты Basic-программ к этим примерам.
В четвертой части приведены справочные данные по командам языка
PicBasicPro.
Благодарность.
Хочу выразить искреннюю признательность своему коллеге Виктору Никитовичу Овчинникову, прочитавшему рукопись и высказавшему ряд важных замечаний.
Также хочу поблагодарить свою супругу Ирину за детей, которых она подарила мне и за помощь в коррекции рукописи и ее издании.
7
Введение
С появлением в электронике микроконтроллеров многие столкнулись с проблемой, как и чем их программировать. В этой книге я не буду касаться вопроса устройства микроконтроллеров, их параметров и т. п., так как эти вопросы неплохо разъяснены во многих книгах, изданных в нашей стране. Здесь же мы будем рассматривать вопросы программирования микроконтроллеров, производимых фирмой Microchip так называемых PIC-контроллеров или на радиолюбительском сленге - «пикушек», на языке BASIC.
Известно, что программы, написанные на языке Ассемблер, дают лучшие результаты. Размер программы минимален и выполняется она значительно быстрее, чем написанная на любом другом языке. Но и писать программы на Ассемблере значительно сложнее и дольше. Команды Ассемблеров различных производителей микроконтроллеров сильно отличаются друг от друга. Поэтому, переходя от одного типа микроконтроллеров к другому типу, приходится, как бы, вновь осваивать новый язык. Да и замысловат он очень. Поэтому в настоящее время, когда технический прогресс требует скорейшего внедрения новых разработок, альтернативой Ассемблеру должны стать языки высокого уровня. В связи с тем, что сейчас многие производители выпускают огромное количество различных типов микроконтроллеров, мы во всех тех случаях, когда памяти микроконтроллера не хватает, всегда можем выбрать более емкий микроконтроллер. А если нас не устраивает скорость выполнения, то мы можем задать более высокую частоту задающего генератора. Многие специалисты утверждают, что лучшим языком программирования является - СИ. Но мы-то с Вами (почитатели других языков) знаем, что лучшим языком является тот, на котором ты грамотнее всего общаешься.
Любая программа представляет собой набор из сотен тысяч или даже миллионов инструкций процессора, каждая из которых кодируется одним или несколькими байтами (эти инструкции еще называются машинным кодом). Пытаться составлять программу, просто набирая коды инструкций, — занятие бессмысленное. Уже после десятка введенных таким способом команд человек теряет нить рассуждений, начинает путаться и допускает ошибки.
Кроме того, программа — это не просто набор вычислительных инструкций. Для общения с внешними устройствами, например, для считывания информации о изменении состояния каких либо датчиков, в наборе команд микроконтроллера есть специальная инструкция — прерывание, которая прерывает работу процессора и передает управление некоторой подпрограмме. Чтобы грамотно использовать прерывания, желательно детально разбираться в устройстве самого контроллера и понимать логику его работы.
В 50 годы прошлого века появился первый высокоуровневый язык программирования. Высокоуровневые языки программирования предназначены для написания программ с помощью привычных для человека терминов. Они манипулируют не конкретными ячейками памяти и элементарными
8