Лабораторная работа №1 по предмету микропроцессорные системы, Конспекты лекций из Микропроцессорные устройства
new-order
new-order

Лабораторная работа №1 по предмету микропроцессорные системы, Конспекты лекций из Микропроцессорные устройства

25 стр-ы.
2Количество скачиваний
180Количество просмотров
100%на 1Количество голосов
Описание
Лабораторная работа №1 по предмету микропроцессорные системы.
20 баллов
Количество баллов, необходимое для скачивания
этого документа
Скачать документ
Предварительный просмотр3 стр-ы. / 25
Это только предварительный просмотр
3 стр. на 25 стр.
Это только предварительный просмотр
3 стр. на 25 стр.
Это только предварительный просмотр
3 стр. на 25 стр.
Это только предварительный просмотр
3 стр. на 25 стр.

ТЕХНОЛОГИЙ - ИМСИТ (г. Краснодар)

Факультет информатики и вычислительной техники

Кафедра информационных технологий

ОТЧЕТ

по лабораторной работе №1

«Исследование работы c клавиатурой и дисплеем в составе микропроцессорной

системы»

дисциплина Микропроцессорные системы

направление подготовки 230100.62 «Информатика и вычислительная техника»

Работу выполнил:

студент 2 года обучения,

группы 14-ИВТ-CПО-01

Кубай Денис Васильвич

Научный руководитель

к.т.н., доцент К.Н. Цебренко

Краснодар 2017

Содержание отчета

1. Методические указания к работе.

1.1 Учебный лабораторный комплекс SDK-1.1

1.2 Составные части комплекса SDK-1.1

2. Порядок выполнения работы

3. Изучите структуру простейшего примера программы на языке С.

Цель работы: Изучить архитектуру лабораторного стенда SDK-1.1 на основе микроконтроллера с системой команд MCS51, изучить инструментальное программное обеспечение стенда, загрузить и выполнить простые учебные программы.

1. Методические указания к работе. 1.1. Учебный лабораторный комплекс SDK-1.1

Учебный лабораторный комплекс SDK-1.1 предназначен для освоения студентами архитектуры и методов проектирования:

 систем на базе микропроцессоров и однокристальных микроЭВМ;  встраиваемых контроллеров и систем сбора данных;  периферийных блоков вычислительных систем;  подсистем ввода-вывода встраиваемых систем.

В состав комплекса входит: 1. Лабораторный стенд SDK-1.1 (рис. 1), включающий:

 микроЭВМ ADuC842BS с архитектурой MCS-51. К внешнему разъему стенда подключены встроенные адаптеры ввода-вывода:

 8-канальный 12-разрядный АЦП;  2-канальный 12-разрядный ЦАП;  4-разрядный порт ввода-вывода, поддерживающий функции запроса

прерывания (2 канала), счетных входов (2 канала), входа синхронизации АЦП, интерфейса microLAN (Dallas).

 Внешнее ОЗУ 64Кб, используемое как память программ или данных.

 Оптически развязанный приемопередатчик инструментального канала RS232C.

 ИМС периферийных устройств:  E2PROM AT24С01 (128 байт);  интегральные часы со встроенным ОЗУ PCF8583 (Philips);  модуль символьного ЖКИ 2*16;  матричная клавиатура 4*2;  звуковой излучатель;  8 управляемых светодиодов.  16-разрядный параллельный порт ввода-вывода.

 Ручные переключатели тестовых сигналов для аналоговых и дискретных портов ввода: коммутатор аналоговых каналов и стимулятор дискретных портов.

 Разъем интерфейса JTAG для контроля периферийной шины и портов, реализованных в ПЛИС MAX3064 (Altera).

Стенд выпускается в виде печатной платы с двусторонним поверхностным монтажом элементов, установленной в корпусе с выведенными клавиатурой, индикатором, переключателями коммутатора и стимулятора портов ввода-вывода, разъемами внешних интерфейсов и электропитания. Параметры портов ввода-

вывода соответствуют спецификации TTL, динамический диапазон аналоговых сигналов ЦАП и АЦП – 0..5В. 2. Внешний адаптер электропитания. 3. Коммуникационный кабель. 4. IBM PC совместимый персональный компьютер.

Инструментальная система программирования включает:  Транслятор с языка ассемблера или C для ядра MCS51 и симулятор

ADuC842 (пакет uVision51 фирмы Keil Software).  Резидентный монитор-загрузчик HEX202.  Программируемую инструментальную систему (загрузчик,

терминал) T167B (IBM PC/ DOS) и T2 (IBM PC/Win32).  Встроенное программное обеспечение и драйвер для ОС Windows

9x/NT для использования контроллера SDK-1.1 в качестве внешнего адаптера ввода-вывода в составе управляющего вычислительного комплекса на базе персонального компьютера.

Рис.1 Лабораторный стенд SDK-1.1.

Подготовка программ для микроконтроллера ADuC842BS осуществляется на языке программирования Си на ПК в обычном текстовом редакторе (или средах программирования, IDE, предназначенных для разработки программ под ядро MCS- 51), далее программа компилируется в исполняемый модуль, доставляемый в стенд с помощью разработанного программного обеспечения. Программы для стенда располагаются в ОЗУ объемом 128 Кб. Из этих 128 Кб как память программ (особенности MCS-51) могут использоваться лишь 56 Кб (в стенде первые 8 Кб памяти программ заняты ПЗУ, в котором располагается системное программное обеспечение, отсюда 64 Кб - 8 Кб = 56 Кб). Однако, как показывает практика, программы такого размера для стенда подготавливать не требуется. В процессе обучения с использованием SDK-1.1 студенты могут на практике ознакомиться с управлением периферийными устройствами, взаимодействующими с вычислителем посредством различных интерфейсов, освоить некоторые специфические аспекты программирования встраиваемых вычислительных систем, эффективного управления ресурсами.

Рис. 2 Процесс написания программ для SDK-1.1.

В стенде предусмотрена возможность симулировать некоторые внешние сигналы без использования дополнительного оборудования: сигналы внешних прерываний, счетные импульсы таймеров, аналоговые сигналы на входах АЦП. Интересно отметить возможность программного инициирования прерываний, не предусмотренную в MCS-51, однако реализованную в стенде через механизм программного управления состоянием входа внешнего прерывания INTO ADuC842BS. ПЗУ с резидентным программным обеспечением реализовано на кристалле ОКЭВМ ADuC842BS по технологии FLASH/ЕЕ и может быть перепрограммировано через интерфейс RS232C с обычного ПК. Новые версии резидентного программного обеспечения могут доставляться в стенд без использования специальных программаторов, а тем более новых микросхем ПЗУ –

достаточно иметь лишь образ доставляемой программы в виде файла и специальную утилиту на ПК. Некоторые устройства стенда подключены к вычислителю через периферийный расширитель, реализованный на базе ПЛИС небольшой емкости, перепрограммируемой через специальный JTAG-порт, что дает возможность при желании изменять механизмы работы с этими устройствами. Иногда при программировании SDK-1.1 возникает необходимость сохранять программу и после выключения питания. Так как стенд создавался для массового использования студентами, такая возможность в базовой его конфигурации имеется лишь за счет замены содержимого FLASH-памяти вычислителя. Однако ее размер составляет всего 8Кб, что не всегда достаточно для более-менее серьезных программ. К тому же, во FLASH-память ADuC842BS может быть записан только один образ, т.е. либо одна программа, либо несколько программ, но скомпонованных в один файл. Это затрудняет обновление отдельной программы в наборе, так как, во- первых, для этого необходимо заново компоновать все программы из набора, во- вторых, невозможно перезаписать часть FLASH-памяти ADuC842BS без стирания всего ее содержимого. Для решения этой проблемы в модификации стенда SDK-1.1/E может быть использована внешняя EEPROM емкостью 32 Кб. Во FLASH-памяти вычислителя можно поместить утилиту приема, распаковки и сохранения в EEPROM, а также извлечения и запуска исполняемых файлов. Все пользовательские программы, таким образом, можно размещать в EEPROM и загружать в ОЗУ только на время исполнения. При старте стенда на жидкокристаллическом индикаторе будет отображаться список содержащихся в EEPROM программ, и пользователь сможет с помощью клавиатуры стенда выбрать нужную. В EEPROM можно сохранять не только исполняемые файлы, но и требуемые пользовательскими программами файлы с данными, к которым они могут обращаться, пользуясь сервисами системного ПО, размещаемого во FLASH вычислителя. Иными словами, на имеющейся в SDK-l.l/E EEPROM можно организовать простейшую файловую систему в составе программного окружения. Пример такой системы показан на рис. 5. На схеме также изображено взаимодействие с периферийными устройствами через сервисы системного ПО. Это может быть удобным, когда основной задачей не является научиться взаимодействовать с периферией, но требуется управлять ею в процессе решения иной задачи.

Рис. 3 Размещение программ в EEPROM стенда SDK-1.1

Стенды SDK-1.1 используются для решения широкого круга задач. В частности, можно использовать стенд в качестве контроллера приборов для автоматизации экспериментов. После запуска эксперимента может проводится автоматическое управление прибором и снятие измерений. Для проведения экспериментов не требуется наличия ПК. При этом имеется возможность переслать результаты на ПК при его подключении к стенду для дальнейшего их исследования.

1.2. Составные части комплекса SDK-1.1 1.2.1. Микроконтроллер ADuC842BS

Микроконтроллер ADuC842 (рис. 6) выпускается фирмой Analog Devices – мировым лидером в области аналоговой схемотехники. ADuC842BS является сигнальным процессором и содержит в себе 12 битный АЦП со встроенным микропроцессором. Процессорное ядро ADuC842 является клоном ядра Intel MCS51. Основные характеристики микроконтроллера: • Рабочая частота 11.0592 МГц. • 8-канальный 12-битный АЦП со скоростью выборок 200 К/с. • Два 12-битных ЦАП (код-напряжение). • Внутренний температурный сенсор. • 640 байт программируемого Е2PROM со страничной организацией (256 страниц по 4 байта). • 256 байт внутренней памяти данных. • Адресное пространство 16 Мб. • Режим управления питанием. • Асинхронный последовательный ввод-вывод. • Интерфейс I2С. • Три 16-битных таймера/счетчика и таймер WatchDog.

Рис. 4 Микроконтроллер ADuC842BS

1.2.2. ПЛИС МАХ3064 В SDK-1.1 используется программируемая логическая интегральная схема

(ПЛИС) семейства МАХ3000А фирмы Altera (рис.7). В очень упрощенном виде ПЛИС представляет собой набор макроячеек и механизм для организации связи между ними. Микросхема ЕРМ3064А содержит 64 макроячейки. Информация о связях между макроячейками хранится в энергонезависимой памяти находящейся внутри самой микросхемы. Для программирования ЕРМ3064А использовался специальный САПР Max+PlusII. Электрическая принципиальная схема расширителя портов ввода-вывода была нарисована в этом САПР и преобразована в базис макроячеек ПЛИС и, далее, в конфигурационный файл, необходимый для соединения нужных логических ячеек ПЛИС. Конфигурационный файл доставляется в память ПЛИС через интерфейс JTAG (IEEE 1149.1). В стенде SDK-1.1 МАХ3064А используется как расширитель портов ввода-вывода. Микросхема МАХ3064А подключена к внешней шине ADuC842BS. Адресная линия А19 используется как сигнал CS (chip select) для МАХ3064А. ПЛИС выбирается, когда на линии А19 логическая единица. Физический адрес ПЛИС таким образом равен 0x80000, что соответствует восьмой странице памяти.

К ПЛИС подключены: • Клавиатура • ЖКИ • Линейка светодиодов • Звуковой излучатель • 16 дискретных портов ввода-вывода

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

Рис. 5 ПЛИС МАХ 3064А

1.2.3. Схема сброса Схема сброса предназначена для формирования качественного сигнала RESET

после включения питания, после нажатия кнопки RESET или после выключения питания. Проблема состоит в том, что при старте контроллера после включения питания или при выключении питания возможны различные переходные процессы, могущие привести к некорректному исполнении программ или порче содержимого ОЗУ. Супервизор питания (Ul) DS1813 обеспечивает формирование сигнала RESET на 150 мс, т.е. на время, достаточное для окончания всех переходных процессов.

Рис. 8. Схема сброса

1.2.4. Источник питания Схема встроенного стабилизатора питания лабораторного макета приведена на

рис.9. Переменное (15.. 16В) или постоянное (9.. 10В) напряжение от внешнего

источника питания попадает на диодный мост U15 через разъем J4. Сердцем встроенного в SDK 1.1 источника питания является микросхема LM7805C. Эта микросхема является интегральным стабилизатором с защитой от перегрева и короткого замыкания. Выходное напряжение – 5В ± 2%, выходной ток до 1 А.

Рис. 6 Источник питания

Стабилитрон D19 (1N4745A) предназначен для защиты LM7805C и электролитических емкостей от превышения входного напряжения (напряжения пробоя стабилитрона – 16В). Электролитические конденсаторы С35 и С36 необходимы для сглаживания пульсаций входного напряжения. Электролитический конденсатор С38 необходим для поддержки работоспособности SDK-1.1 при кратковременных пропаданиях напряжения питания. Емкости С40 и С37 необходимы для фильтрации высокочастотных помех, их использование определяется штатной схемой включения LM7805C.

Рис. 7 Стабилизатор питания ПЛИС

Напряжение 3.3 В для питания ПЛИС формируется с помощью стабилизатора U10 (LD1117S) (рис. 10).

Фильтрующие емкости равномерно распределены по всей поверхности печатной платы. Каждый конденсатор соединяет плюс питания с корпусом. Фильтрующие емкости шунтируют высокочастотные помехи, возникающие в цепях питания 3.3 и 5В (рис. 11).

Рис. 8 Шунтирующие емкости

Шунтирование происходит из-за того, что активное сопротивление емкости тем

меньше, чем выше частота сигнала.

fC Xc

2 1

где, Хс – активное сопротивление конденсатора, f – частота, С – емкость.

Для постоянного напряжения сопротивление конденсатора близко к бесконечности, а для переменного напряжения высокой частоты – конденсатор является резистором с низким сопротивлением.

1.2.5. Кварцевые резонаторы Кварцевые резонаторы – устройства, использующие пьезоэлектрический

эффект для возбуждения электрических колебаний заданной частоты. При совпадении частоты приложенного напряжения с одной из собственных механических частот кварцевого вибратора в приборе возникает явление резонанса, приводящее к резкому увеличению проводимости. Обладая среди резонаторов самой высокой добротностью Q=105…107 (добротность колебательного LС-контура не превышает 102, пьезокерамики – 103), кварцевые резонаторы имеют также высокую температурную стабильность и низкую долговременную нестабильность частоты. Кварцевые резонаторы применяются в генераторах опорных частот, в управляемых по частоте генераторах, селективных устройствах: фильтрах, частотных дискриминаторах и т.д. В SDK-1.1 два кварцевых резонатора (рис.12). Y1 служит для тактирования ADuC842 (12 МГц), а Y2 для тактирования часов реального времени (32.768 КГц).

Рис. 9 Кварцевые резонаторы

1.2.6. Дискретные входы-выходы Дискретные входы-выходы предназначены для ввода и вывода информации

представленной в двоичном виде. Сигнал на входе или выходе дискретного порта может принимать значение логического нуля или единицы. В SDK-1.1 дискретные порты выведены на разъем J3. Эти порты можно использовать для подключения модулей SDX или каких либо других внешних устройств. Кроме этого, к дискретным входам-выходам подключены DIP переключатели, позволяющие задавать фиксированные значения сигналов на входах. По умолчанию все входы притянуты к логической единице (через резисторы на +5В). При замыкании переключателя SW3 на выбранном входе появляется логический ноль. Дискретные входы-выходы не имеют гальванической изоляции. Логическому нулю соответствует 0В, а логической единице +5В (уровни TTL). Нагрузочная способность дискретных портов ввода-вывода подключенных к разъему J3 невелика, так как на разъем выведены порты ADuC842 без каких либо дополнительных усилителей. ADuC842 может обращаться к внешней памяти программ, внешней памяти данных или к каким либо периферийным устройствам. При доступе к внешней памяти программ используется сигнал #PSEN (Program Store Enable) для чтения команд. При доступе к внешней памяти данных используются сигналы #RD и #WR. Порт 0 и порт 2 используются в качестве шины адреса/данных при доступе к внешней

памяти. В SDK-1.1 сигналы PSEN и RD объединены вместе с помощью логического элемента «И» (U2-1), что позволяет использовать единое пространство памяти программ и данных.

Рис. 10 Организация дискретных входов-выходов

Так как для работы с 24 битной шиной адреса и 8 разрядной шиной данных используется только 16 выводов, в схеме поставлены регистры-защелки (latch) U3 и U7. В качестве восьмиразрядного регистра-защелки используется микросхема 74HCT73W. Положительный перепад на входе CLK приводит к запоминанию состояния входов D1..D8 и выдаче информации на выходы Q1..Q8. Активный уровень на входе CLR (логический «0») приводит к обнулению содержимого регистра-защелки. Регистры-защелки получают данные по сигналу ALE. В U3 попадает младшая часть адреса (А0..А7), в U7 – старшие 4 бита адреса (А16..А19) (рис.15). Бит А19 используется как сигнал CS (Chip Select) для выбора микросхемы ОЗУ. ОЗУ выбирается, если на А19 логический ноль. При наличии логической единицы на А19 выбирается ПЛИС. При замыкании JP11 сигнал PSEN замыкается на корпус через резистор R22. Это переводит ADuC842 в режим загрузки ПО после аппаратного сброса.

SDK-1.1 может иметь две микросхемы статической памяти: КМ684000 и AS7C4096. Обе микросхемы являются микросхемами статической памяти с организацией 512Кх8 (512 Кбайт). В стенд SDK-1.1 впаивается только одна из микросхем, хотя на печатной плате есть место для установки обеих.

Рис. 11 Подключение ADuC842 к внешнему ОЗУ

1.2.7. Аналоговые входы-выходы ADuC842 имеет в своем составе 8 быстродействующих 12 разрядных АЦП и 2

12 разрядных ЦАП (выход напряжения) (рис. 16). Для коррекции зависимости параметров ЦАП и АЦП от температуры в ADuC842 встроен термодатчик. Все входы ЦАП и выходы АЦП выведены на разъем J1. Кроме того, выходы DAC0 и DAC1 можно замкнуть на входы ADC0 и ADC1 с помощью переключателя SW1.

Рис. 12 Организация шин адреса/данных

Рис. 13 Выходы АЦП и ЦАП

1.2.8. Светодиодные индикаторы Светодиодные индикаторы подключены к расширителю портов ввода-вывода.

Так как все катоды светодиодов подключены к корпусу, для зажигания светодиодов необходимо подать напряжение +5В (лог. «1») на соответствующий анод. Резисторы R32..R43 ограничивают ток, текущий через порт ввода-вывода и светодиод. В данном случае приблизительный ток можно вычислить по закону Ома: I=U/R=3.3/1000 = 3.3 мА. От силы тока зависит яркость горения светодиода. Если ток сделать очень большим, то порт ввода-вывода или светодиод могут выйти из строя.

Рис.14. Светодиодный индикатор

1.2.9 Устройства I2C В стенде SDK-1.1 два устройства подключенных к шине I2C: часы реального

времени PCF8583 (U11) и EEPROM AT24C01A (U14) (рис.18). Внешняя E2PROM – перепрограммируемое электрически стираемое постоянное запоминающее устройство. Объем памяти E2PROM, установленной в стенде SDK-1.1, составляет 128 байт (возможна установка Е2PROM большего объема, до 32 Кб). Микросхема Е2PROM взаимодействует с процессором посредством интерфейса I2С. Основные характеристики E2PROM: • Возможность перезаписи до 1 млн. раз. • Возможность побайтной и постраничной записи (в текущей конфигурации размер страницы составляет 8 байт). Часы реального времени PCF8583 – часы/календарь с памятью объемом 256 байт, работающие от кварцевого резонатора с частотой 32.768 кГц. Питание осуществляется ионистором (0.1 ф). Из 256 байт памяти собственно часами используются только первые 16 (8 постоянно обновляемых регистров-защелок на установку/чтение даты/времени и 8 на будильник), остальные 240 байт доступны для хранения данных пользователя. Точность измерения времени - до сотых долей секунды. Взаимодействие с процессором осуществляется через интерфейс I2С.

Рис.15 Шина I2C

1.2.10. Матричная клавиатура AK1604A-WWB Клавиатура организована в виде матрицы 4x4. Доступ к колонкам и рядам организован как чтение/запись определенного байта внешней памяти (4 бита соответствуют 4 колонкам, другие 4 бита - рядам). Ряды ROW1..ROW4 подключены к плюсу питания через резисторы. Это обеспечивает наличие логической единицы при отсутствии нажатия. На столбцы клавиатуры подают логический ноль. При нажатии на кнопку, происходит изменение значения сигнала на входе соответствующего ряда с единицы на ноль. Клавиатура подключена через расширитель портов на ПЛИС.

Рис. 16 Подключение клавиатуры

1.2.10. Последовательный канал В SDK-1.1 последовательный канал гальванически развязан (рис. 20).

Гальваническая изоляция или гальваническая развязка – разделение электрических цепей посредством не проводящего ток материала. Гальваническая изоляция позволяет защитить SDK-1.1 от высоких напряжений, различных наводок и подключать его к ПК во время работы. Реализована гальваническая изоляция на базе двух оптронов U8 и U9 (TLP 181). Оптрон TLP181 состоит из светодиода (выводы 1,3) и фототранзистора (выводы 6,4). Если через светодиод пустить ток, то он начинает излучать свет. Свет падает на PN переход фототранзистора и открывает его. Когда свет гаснет, фототранзистор закрывается. Гальваническая изоляция достигается как раз за счет того, что между двумя элементами оптрона нет никакой связи кроме оптической.

Рис 17 Гальванически изолированный последовательный интерфейс SDK-1.1

Выход передатчика последовательного канала TxD попадает на катод оптрона U8. Далее сигнал попадает на двухтактный эмиттерный повторитель сделанный на транзисторах Q1 и Q2. Сигнал TD снимается с эмиттеров транзисторов и далее попадает на ПК. Эмиттерный повторитель питается от двух сигналов

RS232поступающих от ПК: +Un получается от CTS, -Un получается от сигнала DSR. Для того чтобы схема заработала, необходимо подать -12 В на выход DTR ПК и +12 В на выход RTS ПК.

Рис. 18 Подключение сигналов последовательного порта

Схема работает так: когда на базы транзисторов попадает положительный сигнал с оптрона открывается транзистор Q1 и на его эмиттере появляется положительный сигнал. Когда на выходе оптрона отрицательный сигнал (оптрон закрыт), то открывается транзистор Q2. Т.к. выход TxD подключен к катоду оптрона, сигнал в оптроне инвертируется, преобразуя TTL сигнал в сигнал RS232. Входной сигнал RD попадает через защитный диод D2 прямо на оптрон. В оптроне сигнал инвертируется и подается на TTL вход приемника RxD. При программировании последовательного канала под Windows, нужного состояния сигналов RTS и DTR можно добиться с помощью двух строк кода на языке С: EscapeCommFunction( Port, SETRTS); EscapeCommFunction( Port, CLRDTR).

1.2.12. Жидкокристаллический дисплей Жидкокристаллический индикатор (ЖКИ) работает в текстовом режиме (2

строки по 16 символов), имеет подсветку (цвет желто-зеленый). Основные характеристики ЖКИ: • Габариты: 80x36x13.2 мм. • Активная область 56.21x11.5 мм. • Размеры точки 0.56x0.66 мм; размеры символа 2.96x5.56 мм. • Встроенный набор 256 символов (ASCII + кириллица). • Генератор символов с энергозависимой памятью на 8 пользовательских символов.

Рис. 19 ЖКИ WH1602B-YGK-CP

1.2.13. Звукоизлучатель В SDK-1.1 используется пьезоэлектрический звукоизлучатель НРА17А (Z1).

Выходы SND0..SND2 подключены к расширителю портов на базе ПЛИС.

Рис. 20 Звукоизлучатель

2. Порядок выполнения работы

1. Изучите структурную и электрическую принципиальную схемы стенда SDK- 1.1. Воспользуйтесь комплектом документации к SDK-1.1 и данным пособием. 2. Изучите описание инструментального программного обеспечения. Воспользуйтесь руководством пользователя SDK-1.1 и справочной системой Keil Software. 3. Изучите структуру STARTUP.A51 и простейшего примера программы на языке С. 3.1. Файл STARTUP.A51 ;STARTUP.А51: Этот код исполняется после рестарта процессора ;Для трансляции этого файла используйте ассемблер А51 ;со следующей командной строкой: А51 STARTUP.A51 ;Для сборки вашего проекта и модифицированного вами файла ;STARTUP.OBJ используйте линкер BL51 со следующей командной ;строкой. ; BL51 <ваши объектные файлы>, STARTUP.OBJ <опции> ;Определяемая пользователем инициализация памяти после ;рестарта. ;С этими константами будет производится инициализация памяти: ;Абсолютный адрес начала памяти IDATA всегда 0 IDATALEN EQU 8ОН;Длина памяти IDATA в байтах. XDATASTART EQU ОН ;Абсолютный адрес начала памяти XDATA XDATALEN EQU ОН ; Размер памяти XDATA PDATASTART EQU ОН ; Абсолютный адрес памяти PDTATA PDATALEN

EQU ОН ; Размер памяти PDATA ;Инициализация стека ;Следующие константы определяют положение стека необходимого ;для работы реентерабельных функций ;Модель SMALL IBPSTACK EQU 0 ; =1 если используется стек для SMALL . IBPSTACKTOP EQU OFFH+1; установка стека в старшую позицию +1. ;Модель LARGE XBPSTACK EQU 0 ; =1 если используется стек для LARGE XBPSTACKTOP EQU OFFFFH+1; установка стека в старшую ;позицию +1. ;Модель COMPACT PBPSTACK EQU 0 ; =1 если используется стек для COMPACT PBPSTACKTOP EQU OFFFFH+1 ; установка стека в старшую ;позицию +1. ;Определение PPAGE для модели Compact с 64 Кбайт xdata RAM ;Эти константы определяют положение переменных типа pdata. PPAGEENABLE EQU 0 ; =1 если pdata используется. PPAGE EQU 0 ; определяет количество страниц PPAGE. NAME ?C_STARTUP ?C_C51STARTUP SEGMENT CODE

?STACK SEGMENT IDATA RSEG ?STACK DS 1 EXTRN CODE (?C_START) PUBLIC ?C_STARTUP

; Установите 0, если вы компилируете программу для симулятора CSEG AT О ; Установите 2100Н, если вы компилируете программу для SDK1.1 CSEG AT 2100H ?C_STARTUP: LJMP STARTUPl

RSEG ?C_C51STARTUP STARTUPl: ; Очистка IDATA IF IDATALEN <>0

MOV R0,#IDATALEN-1 CLR A

IDATALOOP: MOV @R0,A DJNZ RO,IDATALOOP

ENDIF ; Очистка XDATA IF XDATALEN <>0

MOV DPTR,#XDATASTART MOV R7,#LOW(XDATALEN)

IF (LOW(XDATALEN)) <>0 MOV R6,#(HIGH XDATALEN)+1

ELSE MOV R6,#HIGH(XDATALEN)

ENDIF CLR A

XDATALOOP: MOVX @DPTR,A INC DPTR DJNZ R7,XDATALOOP DJNZ R6,XDATALOOP

ENDIF IF PPAGEENABLE <>0

MOV P2,#PPAGE ENDIF ; Очистка памяти pdata IF PDATALEN <>0

MOV RO,#PDATASTART MOV R7,#LOW(PDATALEN) CLR A

PDATALOOP: MOVX @R0,A INC RO DJNZ R7,PDATALOOP

ENDIF ; стек для модели SMALL

IF IBPSTACK <>0 EXTRN DATA (?C_IBP)

MOV ?C_IBP,#LOW IBPSTACKTOP ENDIF ; стек для модели LARGE IF XBPSTACK <>0 EXTRN DATA (?C_XBP)

MOV ?C_XBP,#HIGH XBPSTACKTOP MOV ?C_XBP+l,#LOW XBPSTACKTOP

ENDIF ; стек для модели COMPACT IF PBPSTACK <>0 EXTRN DATA (?C_PBP)

MOV ?C_PBP,#LOW PBPSTACKTOP ENDIF ; Установка указателя стека

MOV SP,#?STACK-1 ; Переход к программе инициализации памяти и далее к main() LJMP ?C_START END

3 Простейшая программа на языке Си

Следующая программа на языке Си для стенда SDK-1.1 инициализирует последовательный канал на скорости 9600 бод и выдает в него строчку «SDK 1.1». Текст программы: #include "ADuC842.h" // Включение в текст описания регистров // специального назначения ADuC842 void main(void) { TH1 = OxFD; //Скорость 9600 TMOD = 0x2 0; //Таймер 1 в режиме autoreload TCON = 0x4 0; //Запуск таймера 1 SCON = 0x5 0; //8 bit UART, разрешение приема PCON&= 0x7F; //Отключение дублирования скорости, установленной в

// ТН1 ЕА =0; //Запрещение прерываний TI = 0; // Обнуление флага завершения посылки SBUF = 'S'; // Инициация посылки символа «S» while(!Т1); // Ожидание завершения посылки TI = 0; SBUF = 'D' ; while( !TI ); TI = 0; SBUF = 'K'; while( !TI ); TI = 0; SBUF = ' 1' ; while(!TI); TI = 0; SBUF while( !TI ); TI = 0; SBUF = ' 1' ; while( !TI ); while ( 1 ); // «Завершение» программы. }

Необходимо обратить внимание на последний оператор в теле функции main(). Бесконечный цикл while (1) ; играет роль оператора завершения программы. Так как SDK-1.1 не находится под управлением операционной системы, то простой выход из пользовательской программы приведет к неконтролируемой выборке команд микроконтроллером из памяти, что может вызвать нежелательные последствия и даже привести к выходу стенда из строя. Поэтому рекомендуется все программы либо «завершать» бесконечным циклом, либо строить их таким образом, чтобы они работали по бесконечному алгоритму.

Для трансляции программы необходим компилятор С51 фирмы Keil Software. 4. Изучите структуру и назначение объектных файлов, OMF, HEX 5. Изучите переменные окружения, необходимые для нормальной работы компилятора. 6. Разберитесь в командных файлах для трансляции программ и для загрузки программ в SDK-1.1.

Для трансляции программы используется пакет Keil Software. Keil Software поддерживает все стадии разработки приложения: создание исходного файла на С

или Ассемблере, трансляцию, исправление ошибок, линкование объектных файлов, тестирование приложения.

В пакете Keil Software содержатся следующие средства разработки для микроконтроллера 8051: • С51 - компилятор С; • Макроассемблер А51; • Динамический загрузчик/компоновщик BL51; • Конвертер объектных файлов ОС51; • Конвертер объектных и НЕХ-файлов ОН51; • Менеджер библиотек LIB 51; • Симулятор dScope-51 (для Windows); • Отладчик/компилятор ц Vision/51 (для Windows ); • Операционная система реального времени (Real-Time Operating System - RTX). 7. Оттранслируйте пример простейшей программы и загрузите ее в SDK-1.1.

Изучите назначение каждой строки исходного текста в программе. Измените программу и попробуйте ее оттранслировать и загрузить в SDK-1.1.

Для трансляции своей программы запустите командный файл make.bat. Пример командного файла:

@echo off rem стираем загрузочный модуль del test.hex rem Транслируем стартовый модуль А51 startup.a51 rem Если ассемблер вернул код ошибки то завершаем командный файл if errorlevel l goto ERROR rem Транслируем нашу программу на языке С С51 test.с CODE LARGE WL(2) rem Если ассемблер вернул код ошибки то завершаем командный файл if errorlevel l goto ERROR rem Формирование файла в формате ОМЕ из объектных модулей. rem Сегмент кода начинается с адреса 0x2100, сегмент данных с адреса 0x7000 BL51 startup.obj, test.obj to test CODE(02100H) XDATA(07000H) rem Преобразование файла в формате ОМЕ в формат HEX ОН51 test rem Добавляем стартовый адрес (0x2100) в HEX файл if exist test.hex tl67b 0x2100 0x0 addhexstart exhibit.hex bye goto OK :ERROR echo----------ERROR-------------- :OK

8. Скомпилируйте и загрузите свою программу в симулятор dScope Debugger. Изучите процесс отладки программ в симуляторе Загрузка программы в SDK-1.1. Подключите SDK-1.1 к ПК с помощью кабеля RS-232. Включите питание стенда. Загрузочный модуль программы в формате HEX передается в SDK-1.1 по последовательному каналу RS-232 с помощью программы Т167b или Т2. Для запуска процесса загрузки запустите командный файл load.bat. Далее, перед каждым запуском загрузчика, нажимайте кнопку RESET на стенде, чтобы стенд переходил из

режима выполнения вашей программы в режим загрузчика. Пример командного файла: tl67b 2 12 openchannelrts loadhex+ test.hex bye

Здесь пока нет комментариев
Это только предварительный просмотр
3 стр. на 25 стр.