Программирование Микроконтроллеров с...

16
Клаус Кюхнель Программирование Микроконтроллеров с Легкостью

Upload: truongkhue

Post on 31-Jan-2018

290 views

Category:

Documents


13 download

TRANSCRIPT

Page 1: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель

Программирование Микроконтроллеров с Легкостью

Page 2: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования
Page 3: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 3

BASCOM. Программирования Микроконтроллеров с легкостью

Предисловие

Рынок микроконтроллеров знает несколько хороших семейств 8-разрядных микрокон-

троллеров, например, 8051 с его многочисленными производными от различных изготови-

телей, 6805 и 68HC11 от Motorola, PICmicros от Microchip и AVR от Atmel. Семейство мик-

роконтроллеров 8051 было хорошо известно на протяжении многих лет. Разработка новых

производных еще не завершена. Время от времени заявляются новые мощные производ-

ные. Вы найдете производные от Philips, Dallas, Analog Devices, Cygnal и других с извест-

ным ядром 8051, но расширенной частотой и периферийными устройствами. Например, в

некоторые чипы были интегрированы полные аналого-цифровые и цифро-аналоговые

подсистемы. Atmel разработал семейство AVR микроконтроллеров, которые хорошо под-

ходят для программирования на языках высокого уровня и внутрисхемного программиро-

вания. Для всех этих микроконтроллеров на рынке есть программное обеспечение для

разработки, начиная от простых ассемблеров под DOS и заканчивая интегрированной

средой разработки для Windows95/98/NT. За исключением сред программирования, кото-

рые предлагают, например, KEIL, IAR или E-LAB Computer для профессиональных прило-

жений, есть также более экономные и, тем не менее, достаточно оснащенные среды раз-

работки, которые могут поддерживать эти микроконтроллеры. BASCOM-8051 и BASCOM-

AVR - среды разработки, созданные вокруг мощного BASIC компилятора, которые годятся

для разработки проекта и разработки программ для семейства 8051 и производных, а

также для AVR микроконтроллеров от Atmel. В этой книге будет описано программирова-

ние микроконтроллеров с использованием BASCOM-8051 (версия 2.0.4.0) и BASCOM-AVR

(версия 1.11.3.0). Несколько приложений помогут понять использование BASCOM-8051 и

BASCOM-AVR.

Page 4: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 4

BASCOM. Программирования Микроконтроллеров с легкостью

Благодарности

Я хотел бы поблагодарить:

• В первую очередь, Mark Alberts из MCS Electronics, который разрабатывал BASCOM, среду про-

граммирования в выдающимся коэффициентом цена-качество,

• Atmel за разработку AVR RISC микроконтроллеров, которые дали новые возможности семейст-

вам микроконтроллеров,

• Christer Johansson из High Tech Horizon, который эффективно обеспечил безопасную связь мик-

роконтроллеров и PC разработкой и свободным распространением протокола S.N.A.P. и необ-

ходимых инструментальных средства и

• Lars Wictorsson из LAWICEL за разработку CANDIP, микроконтроллерных модулей с CAN ин-

терфейсом.

Page 5: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 5

BASCOM. Программирования Микроконтроллеров с легкостью

Содержание 1 Поддерживаемые Микроконтроллеры .................................................................................. 7

1.1 Семейство 8051 .............................................................................................................. 7 1.2 Семейство AVR............................................................................................................. 10

2 BASCOM................................................................................................................................ 23 2.1 Демонстрационные BASCOM ...................................................................................... 23 2.2 Коммерческие Версии BASCOM.................................................................................. 25 2.3 Обновление Коммерческой Версии BASCOM ............................................................ 25 2.4 Проекты BASCOM......................................................................................................... 26

2.4.1 Работа над проектами ........................................................................................... 26 2.4.2 Опции BASCOM...................................................................................................... 27

2.5 Инструменты BASCOM................................................................................................. 36 2.5.1 Имитирование ........................................................................................................ 37 2.5.2 Терминальный Эмулятор ...................................................................................... 39 2.5.3 Разработчик LCD.................................................................................................... 40 2.5.4 Библиотечный Менеджер ...................................................................................... 44 2.5.5 Программирование Устройств .............................................................................. 49

2.6 Аппаратные средства для AVR RISC Микроконтроллеров........................................ 54 2.6.1 Плата Разработчика AVR DT006 .......................................................................... 54 2.6.2 AVR-ALPHA с AT90S2313...................................................................................... 55

2.7 Вместо "Hello World" ..................................................................................................... 56 2.7.1 AVR ......................................................................................................................... 56 2.7.2 8051......................................................................................................................... 57 2.7.3 Общее Описание.................................................................................................... 58 2.7.4 Моделирование ...................................................................................................... 63

2.8 Система Помощи BASCOM.......................................................................................... 65 3 Некоторые Свойства BASCOM............................................................................................ 68

3.1 Создание новых инструкций ........................................................................................ 68 3.2 Параметры для Подпрограмм в BASCOM-AVR.......................................................... 70 3.3 BASIC & Ассемблер ...................................................................................................... 72

3.3.1 AVR ......................................................................................................................... 73 3.3.2 8051......................................................................................................................... 74

4 Применение .......................................................................................................................... 76 4.1 Программируемая Логика............................................................................................. 76 4.2 Таймер и Счетчик.......................................................................................................... 80

4.2.1 AVR ......................................................................................................................... 81 4.2.2 8051....................................................................................................................... 104

4.3 Управление светодиодами......................................................................................... 107 4.3.1 Одиночный светодиод ......................................................................................... 108 4.3.2 Семисегментные Индикаторы ............................................................................. 109

Page 6: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 6

BASCOM. Программирования Микроконтроллеров с легкостью

4.3.3 Точечно-Матричные Индикаторы ....................................................................... 114 4.4 Управление LCD ......................................................................................................... 119

4.4.1 Прямое Управление ............................................................................................. 119 4.4.2 LCD с Последовательным Интерфейсом........................................................... 123

4.5 Подключение Кнопок и Клавиатур ............................................................................. 129 4.5.1 Отдельные Кнопки ............................................................................................... 130 4.5.2 Матричная Клавиатура ........................................................................................ 133 4.5.3 Клавиатура PC-AT................................................................................................ 137

4.6 Ввод Данных посредством IR Пульта Управления................................................... 141 4.7 Асинхронная Последовательная Связь .................................................................... 143 4.8 Интерфейс 1-WIRE ..................................................................................................... 151 4.9 Интерфейс SPI ............................................................................................................ 161 4.10 Шина I2C....................................................................................................................... 168 4.11 Масштабируемый Сетевой Протокол S.N.A.P .......................................................... 174

4.11.1 Характеристики S.N.A.P....................................................................................... 174 4.11.2 Описание Протокола S.N.A.P. ............................................................................. 175 4.11.3 S.N.A.P. Монитор.................................................................................................. 179 4.11.4 Цифровой Ввод/Вывод ........................................................................................ 183

4.12 CANDIP – Интерфейс для CAN.................................................................................. 197 4.13 Случайные Числа........................................................................................................ 210 4.14 Текущее Среднее число ............................................................................................. 215

5 Приложение ........................................................................................................................ 219 5.1 Десятично-Шестнадцатерично-ASCII Преобразование ........................................... 219 5.2 Принципиальная Схема DT006.................................................................................. 220 5.3 Символы на Семисегментном Дисплее .................................................................... 222 5.4 BASIC Stamp II............................................................................................................. 223 5.5 Литература .................................................................................................................. 223 5.6 Ссылки ......................................................................................................................... 224

Page 7: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 17

BASCOM. Программирования Микроконтроллеров с легкостью

Мнемоника Описание Операция Циклы Арифметические и Логические Инструкции ADD Rd, Rr Add without Carry - Сложить без переноса Rd = Rd + Rr 1 ADC Rd, Rr Add with Carry - Сложить с переносом Rd = Rd + Rr + C 1 ADIW Rd, K Add Immediate To Word - Сложить непо-

средственное значение со словом Rd+1:Rd,K 2

SUB Rd, Rr Subtract without Carry - Вычесть без пере-носа

Rd = Rd - Rr 1

SUBI Rd, K Subtract Immediate - Вычесть непосредст-венное значение

Rd = Rd - K8 1

SBC Rd, Rr Subtract with Carry - Вычесть с переносом Rd = Rd - Rr - C 1 SBCI Rd, K Subtract with Carry Immedtiate - Вычесть

непосредственное значение с переносом Rd = Rd - K8 - C 1

SBIW Rd, K AND Rd, Rr Logical AND - Выполнить логическое AND

(И) Rd = Rd · Rr 1

ANDI Rd, K Logical AND with Immediate - Выполнить ло-гическое AND (И) с непосредственным значением

Rd = Rd · K8 1

OR Rd, Rr Logical OR - Выполнить логическое OR (ИЛИ)

Rd = Rd V Rr 1

ORI Rd, K Logical OR with Immediate - Выполнить ло-гическое OR (ИЛИ) с непосредственным значением

Rd = Rd V K8 1

EOR Rd, Rr Logical Exclusive OR - Выполнить исклю-чающее OR (ИЛИ)

Rd = Rd EOR Rr 1

COM Rd One's Complement - Выполнить дополнение до единицы

Rd = $FF - Rd 1

NEG Rd Two's Complement - Выполнить дополнение до двух

Rd = $00 - Rd 1

SBR Rd,K Set Bit(s) in Register - Установить бит(ы) в регистре

Rd = Rd V K8 1

CBR Rd,K Clear Bit(s) in Register - Очистить бит(ы) в регистре

Rd = Rd · ($FF - K8)

1

INC Rd Increment Register - Инкрементировать ре-гистр

Rd = Rd + 1 1

DEC Rd Decrement Register - Декрементировать ре-гистр

Rd = Rd -1 1

TST Rd Test for Zero or Negative - Проверить на ноль или минус

Rd = Rd · Rd 1

CLR Rd Clear Register - Очистить регистр Rd = 0 1 SER Rd Set Register - Установить все биты регист-

ра Rd = $FF 1

Page 8: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 36

BASCOM. Программирования Микроконтроллеров с легкостью

Рисунок 18 Выборов программатора

2.5 Инструменты BASCOM

BASCOM IDE включает несколько важных инструментальных средств. Имитатор и про-грамматор уже упоминались.

Другие инструментальные средства

• Терминальный Эмулятор для связи с последовательным интерфейсом целевых аппа-ратных средств,

• LCD Designer (Разработчик LCD), поддерживающий разработку определенных пользо-вателем символов для подключенного символьного LCD

• менеджер библиотек, поддерживающий управление библиотеками и

• для BASCOM-8051, Графический Преобразователь BMP, предназначенный для преоб-разования файлов BMP в Графические Файлы BASCOM (BGF - BASCOM Graphic Files) для отображения Графическим LCD.

Page 9: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 37

BASCOM. Программирования Микроконтроллеров с легкостью

2.5.1 Имитирование

BASCOM-8051 и BASCOM-AVR имеют свой собственный внутренний имитатор (симуля-тор). Простой программный пример описывает использование имитатора в обоих IDE BASCOM.

Программа, которую нужно проимитировать, управляет цифро-буквенным LCD с двумя строками, 16 символов каждая. Листинг 1 показывает исходный текст. $sim 'только для имитирования, в противном случае 'надо закомментировать Dim A As Byte M1:

A = Waitkey() If A = 27 Then Goto M2 Cls Upperline Lcd A Lowerline Lcd Hex(a) Print Chr(a) Goto M1

M2: End

Листинг 1 Проверка LCD (LCD.BAS)

Щелкнув Program>Simulate (Программа>Симулятор) или F2, запускается Имитатор и от-крывается окно имитатора.

Рисунок 19 показывает имитационное окно BASCOM-8051, а Рисунок 20 то же самое для BASCOM-AVR.

Page 10: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 38

BASCOM. Программирования Микроконтроллеров с легкостью

Рисунок 19 Имитатор BASCOM-8051

Рисунок 20 Имитатор BASCOM-AVR

Page 11: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 56

BASCOM. Программирования Микроконтроллеров с легкостью

Рисунок 35 Мини Модуль AVR- ALPHA

2.7 Вместо "Hello World"

После введения в основные процедуры программирования, а также Опции и Инструмен-тальные средства BASCOM, первый и очень простой программный пример опишет работу с BASCOM. Обычно, такие упражнения выполняют программы класса "Hello World". Но пример здесь – программа, управляющая таймерным прерыванием, которая, Я думаю, более типичная микроконтроллерная программа, чем "Hello World". Из-за различной аппа-ратной базы семейства 8051 и AVR, таймерный пример будет отдельно объяснен для обоих микроконтроллерных семейств.

2.7.1 AVR Таймер0 - 8-битовый таймер с 10-битовым предварительным делителем частоты. Тай-мерный период можно вычислить, используя следующее выражение:

T = 256 ⋅ (prescaler / f OSC)

Для тактовой частоты 4 МГц и предварительного делителя частоты (prescaler) 1024, полу-чен таймерный период 0.065536 с. Это означает, что таймер переполняется каждые 0.065536 с и генерирует прерывание.

Page 12: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 100

BASCOM. Программирования Микроконтроллеров с легкостью

Рисунок 50 Цифро-аналоговое преобразование посредством ШИМ

4.2.1.4 Измерение Длительности Импульса

Таймеры могут также использоваться для измерения длительности импульса. Рисунок 51 показывает последовательность импульсов с двумя различными фазами низкого уровня (Lo), tp1 и tp2.

Рисунок 51 Последовательность импульсов

В самом простом случае, таймер запускается по спадающему фронту и останавливается при обнаружении возрастающего фронта. Результат в регистре таймера отражает изме-ренное время. Листинг 20 показывает программный пример PULSIN.BAS, который исполь-зует Таймер0 для измерения времени. Declare Function Lopulse() As Byte Dim Value As Byte Inputpin Alias Pind.0 ' Inputpin – Название для Pind.0

Page 13: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 109

BASCOM. Программирования Микроконтроллеров с легкостью

4.3.2 Семисегментные Индикаторы

Семисегментные индикаторы могут отображать цифры нашей системы исчисления и не-сколько специальных символов.

Есть много типов семисегментных индикаторов от различных производителей. В основ-ном, этот тип индикаторов состоит из множества светодиодов с общими анодами или ка-тодами.

В нашем прикладном примере использован индикатор типа SA03-11 сделанный Kingbright. Рисунок 54 демонстрирует такой индикатор.

Рисунок 54 Семисегментный индикатор SA03-11

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

Рисунок 55 показывает назначение сегментов и конфигурацию выводов SA03-11.

Рисунок 55 Назначение Сегментов и Конфигурация Выводов SA03-11

Page 14: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 152

BASCOM. Программирования Микроконтроллеров с легкостью

Рисунок 80 Системная Шина 1-Wire

Следующие программные примеры объясняют применение 1-Wire Цифрового Термометра DS1820 (Рисунок 81). Это устройство пред-лагает множество интересных характеристик; оно выбрано не слу-чайно.

Рисунок 82 показывает блок-схему функционального назначения DS1820 .

Рисунок 81 DS1820

Page 15: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 199

BASCOM. Программирования Микроконтроллеров с легкостью

рующим из всех узлов, которые получают сообщение правильно (положительное под-тверждение). Это подтверждение не зависит от результата проверки приема.

Конец Фрейма (End of Frame) обозначает конец сообщения. Перерывом (Int – Intermission) является минимальное количество промежутков времени между двумя последователь-ными сообщениями. Если его нет, дальнейший доступ к шине будет бесполезным.

Эти основы должны дать начальные знания, которые можно расширить с помощью лите-ратуры по CAN.

Основываясь на AT90S8515, Шведская компания LAWICEL [http://www.candip.com] разра-ботала микроконтроллерный модуль CANDIP/AVR. CANDIP/AVR содержит все компонен-ты, требующиеся для построения интерфейса на шине CAN. Рисунок 100 показывает мо-дуль CANDIP/AVR.

Рисунок 100 Микроконтроллерный Модуль CANDIP/AVR

Микроконтроллерный модуль CANDIP/AVR имеет следующее характеристики:

• Стандартная 28 выводная DIP плата с 0.1" выводами (использует стандартный носи-тель DIP28).

• Требует только источник питания 5В DC/30мА.

• Atmel AVR типа AT90S8515 нормально работает на 3.6864МГц.

Page 16: Программирование Микроконтроллеров с Легкостьюbascom.at.ua/_ld/0/39_Klaus_Kuhnel.pdf · Клаус Кюхнель 3 bascom. Программирования

Клаус Кюхнель 202

BASCOM. Программирования Микроконтроллеров с легкостью

Рисунок 102 Активная Плата для CANDIP/AVR

На основе представленных аппаратных средств теперь можно разрабатывать первое CAN приложение.

Минимум с двумя Активными Платами можно создать CAN сеть путем соединения двух линий CAN шин CAN_Hi и CAN_Lo.

Рисунок 103 показывает электрическую схему нашего примера сети с внешними компо-нентами обоих CANDIP/AVR сетевых узлов.