Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Применение микроконтроллеров MCS-51 при проектировании электронных устройств. Учебное пособие
.pdf
9. ОСОБЕННОСТИ МИКРОКОНТРОЛЛЕРОВ
СЕМЕЙСТВА MCS-251
Несмотря на то что первые микросхемы семейства MCS-51 появились более 15 лет назад
получили второе дыхание в виде нового поколения – семейства MCS251 [8]. Основная особенность микроконтроллеров MCS-251 – возможность выполнять как программы, написанные для микроконтроллеров MCS-51, так и программы, написанные собственно для семейства MCS-251. Для этого в них введены два режима: двоичный (binary
mode) режим и исходный (source mode) режим. В
8XC251SB может выполнять коды, написанные и для MCS-51 и для
MCS-251. Наиболее эффективная работа 8XC251SB достигается в ис-
ходном режиме, позволяющем более полно использовать новую архитектуру и новые команды. Для совместимости с предыдущими разработками 8XC251SB имеет выводы, совпадающие с выводами 8XC51FX.
Так что если у вас была разработка, выполненная на базе 8XC51FX, вы
просто конфигурируете 8XC251SB для двоичного режима, вставляете
8XC251SB в колодку микросхемы, и ваше устройство работает с
большей производительностью. Для получения ещё большей производительности вам нужно будет переписать большую часть программного обеспечения с использованием новых команд MCS-251 и исходного
режима.
Отметим следующие особенности микроконтроллеров семейства
MCS-251 [8]:
1) 24-битная линейная адресация
мой памяти);
2) РАЛУ с регистрами, адресуемыми как байт, два байта и четыре
байта;
7
, они до сих пор используются и, более того,
двоичном режиме
(обеспечивает 16 Мбайт адресуе-
7
При переиздании работы в 2014 году следует сказать «…появились более
33 лет назад», поскольку микроконтроллер i8051 был выпущен в 1981 (!) году.
51

3) страничный режим, ускоряющий выборку команд из внешней
памяти;
4) конвейер команд;
5) расширенная система команд, включающая шестнадцатибитные
арифметические и логические команды;
6) состояние длится два периода тактового генератора (в отличие
от шести тактов для MCS-51).
Только за счёт этого время выполнения команды, например, ADD A,
#DATA сокращается с 0.75 мкс (8XC51FC) до 0.133 мкс (8XC251SB) при
тактовой частоте 16 МГц.
Таким образом, если временные характеристики MCS-51 не удовлетворяют требованиям вашей разработки и вам хочется, чтобы стоимость изделия была минимальной, имеет смысл использовать микроконтроллеры семейства MCS-251.
52

10. РАБОТА С ОБОЛОЧКОЙ COMPASS/51
Теперь можно в текстовом редакторе просто написать программу.
Конечно, перед этим нужно сделать сущую безделицу – методом проектирования сверху вниз составить блок-схему алгоритма, не забывая,
что существует структурированное программирование.
Здесь хотелось бы напомнить о двух вещах. Во-первых, вы значительно облегчите себе жизнь, если будете пользоваться средством автоматизации написания программ – продуктом фирмы Intel ApBuilder.
Некоторые начальные сведения о методах работы с этой программой
приведены ниже. Во-вторых, не экономьте время на заголовках программ и подпрограмм и на комментариях. Со временем у вас, несомненно, появится возможность убедиться в правильности этой незатейливой мудрости, а пока придется поверить на слово
как с этим обстоят дела «там». Вам представляется случай взглянуть
на фрагмент программы, написанной сотрудницей фирмы Intel [7]. Отметим, что это написано не в качестве образца оформления программы, а просто в качестве рабочей документации, причем автору не
стыдно поставить свою фамилию.
$TITLE (INTEL_I2C_SOFTWARE EMULATION_MASTER CONTROLLER)
$INCLUDE(A:MACRO.PDF)
;-----------------------------------------------------------
;МОДУЛЬ ВЕДУЩЕГО КОНТРОЛЛЕРА INTEL MCS-51
;Эта программа на ассемблере ASM51 демонстрирует связь
;по шине I2C между; изделиями линии MCS-51 фирмы Intel
;и совместимыми с шиной I2C;интегральными схемами,
;расположенными на отладочной плате фирмы Philips
;OM1016 I2C.
;(Те, кто добрался до этого места, могут заодно узнать,
;что такое I2C-bus, если внимательно прочтут текст
;со страницы 2-174 в [7].
и посмотреть,
53

;Эта программа записывает числовые данные, представляющие
;собой сообщение для дисплея "_I2C", в совместимую
;с I2C ИС (PCF8570 RAM), читает эти значения обратно
;в буфер и передаёт содержимое буфера в драйвер
;дисплея на светоизлучающих диодах (СИД) фирмы Philips
;SAA1064, чтобы отобразить их на дисплее. Замечание:
;С этой программой должен использоваться ASM51
;макро файл MACRO.PDF.
;Написано:
; Intel Corporation Отдел прикладных разработок
для встроенных
; 8 - разрядных микроконтроллеров
; Версия 1.0
;Дата: 21 декабря 1992 г.
;------------------------------------------------------; Определения (приведены частично)
;=======================================================
;-----АДРЕСА УСТРОЙСТВ НА ПЛАТЕ ОТЛАДКИ----------------I2C_RAM EQU 0AEh;Ведомый адрес для PCF8570 RAM
I2C_LED EQU 076h;Ведомый адрес для драйвера СИД SAA1064
;------БУФЕРЫ ХРАНЕНИЯ ДАННЫХ В RAM--------------------BYTE_CNT DATA 009h;Счетчик байтов для I2C процедур
SLV_ADDR DATA 00Ah;Адрес ведомого для I2C процедур
;------ДЕКЛАРАЦИЯ ВЫВОДОВ
SCL_PIN BIT P0.6;Последовательная линия синхронизации
SDA_PIN BIT P0.7;Последовательная линия данных для I2C
;-----------------RESET-------------------------------- ORG 0
AJMP I2C_RESET
;------------------------------------------------------; ПОДПРОГРАММЫ
;------------------------------------------------------;Подпрограмма посылки STOP
;Эта подпрограмма посылает условие STOP по шине I2C
;для освобождения шины. Этот модуль детально описан
;в документе FaxBACK #2175 и в BBS документе AP476.ZIP.
;-----------------------------------------------------SEND_STOP:
CLR SDA_PIN ;Получить готовность SDA для STOP
Сабриной Куорлес
ПОРТА P0 ДЛЯ I2C--------------
54

%RELEASE_SCL_HIGH ;Установить синхр. для останова
%DELAY_3_CYCLES ;Задержка
SETB SDA_PIN ;Установить STOP для I2C
;Задержка обеспечивается программой
CLR I2C_BUSY ;Очистить статус занятости I2C
RET ;Шина должна освободиться
;------------------------------------------------------;Подпрограмма посылки сообщения SEND_MSG
;Эта подпрограмма, используя информацию, хранящуюся
;в буфере XMT_DAT, посылает сообщение по всей шине I2C
;в следующем формате:
;Buffer @R0 = SlvAddr,#of Bytes to be Transferred,
;Data Bytes
;------------------------------------------------------SEND_MSG:
MOV SLV_ADDR,@R0 ;Инициализировать адрес ведомого
INC R0 ;Перейти к следующему адресу
MOV BYTE_CNT,@R0 ;Инициализировать BYTE_CNT
INC R0 ;
ACALL SEND_DATA ;Переслать данные
RET ;Вернуться из подпрограммы
;------------------I2C МАКРОС--------------------------;Эти макросы должны использоваться в совокупности
;с ASM51 программой I2CDEMO.ASM, которая определяет
;функционирование ведущего контроллера;I2C
;Написано:
;Сабриной Куорлес
;Intel Corporation
;Отдел прикладных разработок для встраиваемых 8 разрядных
;микроконтроллеров
;Версия 1.0
;Дата: 1 декабря 1992 г.
;------------------------------------------------------%*DEFINE(Delay_3_Cycles)(
NOP
NOP
NOP
Следующий адрес
55

)
%*DEFINE(Release_SCL_High)(
SETB SCL_Pin
JNB SCL_Pin,$
)
Естественно, что здесь приведена лишь малая часть программы,
просто показывающая принятый стиль оформления.
Переходим к собственно изготовлению программы. Поскольку для
выполнения курсового проекта требуется использовать язык Ассемблер, необходимо создать текстовый файл, содержащий мнемонические обозначения команд микроконтроллеров семейства MCS-51.
Обычно такой файл имеет расширение.asm. Вполне естественно для
этих целей использовать удобный
(или привычный?) для вас тексто-
вый редактор.
Затем средствами программы Ассемблер этот исходный текст переводится в объектный код (общепринятое расширение файла – .obj).
Далее с помощью редактора связей (Linker) компонуется шестнадцатеричный файл, включающий объектные модули и библиотеки. Для проверки работоспособности программы и ее отладки совсем не вредно
проследить за ее
выполнением с помощью программного эмулятора
(Simulator) или специальной платы отладки (Evaluation Board). Таким
образом, для разработки проекта требуются следующие ресурсы: текстовый редактор, ассемблер, редактор связей и отладчики.
Однако сейчас принято пользоваться интегрированными оболочками, и вам предлагается поработать в интегрированной среде разработки (Integrated Development Environment – IDE) фирмы Production
Languages Corporation (PLC), которая называется COMPASS/51. К сожалению, к моменту составления
этого текста в наличии имелась только свободно распространяемая пробная версия (Evaluation Version)
этого продукта, хотя при наличии финансов можно приобрести и
«промышленную» версию (Production version).
Пробная версия имеет следующие ограничения.
1. Ассемблируемый сегмент кода не превышает 1 Кбайт.
2. Компилируемый (с языка Си) сегмент кода также не превышает
1 Кбайт.
3. Редактор связей работает
с числом объектных файлов не более
четырех.
4. В комплекте поставки нет объектных библиотек.
56

5. Отладчик загружает информацию не более чем о четырех фай-
лах.
Это минусы. К плюсам можно отнести следующие пункты:
1. Compass/51 работает в среде Windows.
2. Имеет современный (сами понимаете, для 1996 года от Рожде-
ства Христова) пользовательский интерфейс.
3. Из всех известных автору «фирменных» ассемблеров это един-
ственный ассемблер, который не «ругается
» на комментарии, написан-
ные на русском языке!
Итак, в среде Windows вы нашли иконку, соответствующую Compass/51. По внешнему виду она напоминает самый известный морской
навигационный прибор. После двойного щелчка левой клавишей мыши (click-click) в иконке вы оказываетесь в интегрированной среде
Compass/51. Её рабочая панель (рис. 10.1) имеет характерный для всех
Windows-приложений вид: вверху
строка рабочего меню (зона заго-
ловков меню), ниже – полоса меню инструментов (Tool Bar Menu), выполненных в виде кнопок.
Рис. 10.1. Начальное окно программы Compass/251
57

Знакомству с системой Compass/51 помогает достаточно богатая
система подсказок. Для начального знакомства непременно воспользуйтесь кнопкой QT (Quick Tutor – Быстрый репетитор). Правда, вся
информация будет отображаться на английском языке. Далее приведены некоторые минимальные сведения, помогающие при работе с
Compass/51.
Если вам не терпится начать писать текст программы, смело нажимайте кнопку Edit текстового редактора и
создавайте новый (попробуйте-ка!) или редактируйте старый файл. И здесь самое время понять,
что такое дружественный интерфейс. По умолчанию Compass/51 в качестве редактора использует текстовый редактор Notepad. Однако вы
по своему желанию можете сконфигурировать Compass/51 таким образом, что при работе в редакторе автоматически будет загружаться ваш
любимый текстовый редактор, даже
если он предназначен для работы
в DOS – например, MultiEdit или Lexicon! Правда, за это (если ваш любимый текстовый редактор не работает с ClipBoard Windows) вы можете поплатиться проблемами переноса текста из ApBuilder. А для
подключения нового текстового редактора нужно выполнить следующие действия (характерные для конфигурирования любых процессов в
Compass/51).
1. Выбрать в меню пункт Configure.
2. Выбрать соответствующий подпункт (в данном случае Configure
Control Panel).
3. В окне Editor Path заменить имя стандартного редактора NotePad
на полное имя нового редактора, например D:\ME\me.exe (но лучше
этого не делать).
Теперь после выбора редактируемого файла он будет загружен в
требуемом редакторе. Осталось только правильно и быстро постучать
по клавишам клавиатуры, и исходный текст готов! При
этом не забы-
вайте о существовании программы ApBuilder.
Но вообще-то правильнее было бы не начинать сразу с написания
исходного текста, а сначала следовало бы создать проект. Для этого в
пункте меню File выбираем подпункт Open Project (Открыть Проект)
или нажимаем кнопку Open в Tool Bar. В принципе все операции можно выбирать как из меню, так и
с помощью кнопок. Для экономии места далее будет использоваться выбор действий с помощью кнопок.
В появившемся диалоговом окне нужно указать полное имя создаваемого вами проекта, которое обязательно будет иметь расширение.pro,
58

причем вы его можете не указывать, оно будет установлено автоматически.
Следующий шаг – конфигурирование окружения. Это можно сделать, нажав кнопку Setup с надписью On Off (третью слева) или нажав
на кнопку Config с тремя прямоугольниками (восьмую слева) и выбрав
в появившемся меню подпункт Environment... В диалоговом окне
непременно выберите опцию Display Summary Window. И здесь же, в
частности, можно выбрать текстовый редактор, как это уже обсуждалось выше.
Далее нужно смонтировать проект – указать имена файлов, которые будут использованы в вашем проекте. Для этого нажмите кнопку
Main (Project Maintenance). С помощью кнопок Add (добавить) и Remove (удалить) изменяется состав файлов проекта (могут включаться
исходные файлы на языках Си и Ассемблер), а с
помощью кнопок Add
Lib и Del Lib – состав библиотек, участвующих в проекте.
В случае работы с Си было бы необходимо произвести конфигурацию и выполнить операцию компиляции с Си (кнопка Comp[ile]), однако вы по понятным причинам сконфигурируете и запустите процесс
ассемблирования (кнопка Ass[embler]). В результате работы ассемблера в рабочей директории вы должны были бы
обнаружить файлы с
расширением.obj. Однако вы там ничего подобного не обнаружите, а
получите сообщение, состоящее из множества строчек типа:
.
.
ERROR <401> Syntax error
.
.
с завершающей надписью
ERRORS: l+1
Warnings: m+1
Не пугайтесь! Так и должно было случиться! Если, конечно, вы все
команды не перенесли из ApBuilder. В этом случае ошибки будут не
синтаксические, а такого вида:
.
ERROR <405> Label "T2MOD" not defined
.
59

Существует, по крайней мере, два пути устранения этих сообщений. Путь первый – введите в вашей программе строку со следующей
директивой:
T2MOD EQU "0C9H"
Если у вас мало времени, но много дискового пространства, вам
больше подходит второй путь. Здесь нужно скопировать файл
\INTEL\APBLDR\51\INCLUDE\51fx.inc в вашу рабочую директорию и
в начале программы добавить такую строчку:
INCLUDE "51fx.inc"
Засучив рукава, принимайтесь за поиск и исправление ошибок в
текстовом редакторе. После n+1 запуска ассемблера вы наконец-то обнаружите вожделенный файл с расширением.obj.
И вот – завершающий этап: конфигурация и запуск редактора связей (кнопка Link). При работе на ассемблере убедитесь, что опция Use
C Runtime Library запрещена. Обратите внимание на диалоговое окно
конфигурации Link: Configure Link – там имеется
пункт Executable
Format, включающий несколько вариантов. Для работы с отладчиком
необходимо выбрать формат IEEE 695. Для программирования следует
выбрать формат Intel Hex Records. В этом случае выходной файл будет
иметь расширение.hex. (Полезно рассмотреть содержимое этого файла.
Легко сообразить, что первый байт содержит число байт в строке, потом идет адрес. Что означают другие служебные байты, сообразить не
так легко, но ведь вы уже на старших курсах!)
В принципе, всю эту последовательность действий выполняет операция Make (при соответствующей настройке).
К средствам роскоши Compass/51 можно отнести возможность
графического отображения связей между файлами. Это достигается с
помощью кнопки Graph, помогающей вам воочию убедиться, насколько хорошо структурирован ваш проект.
Для контроля правильности
работы программы следует воспользоваться пунктом меню Debug. В диалоговом окне Debug должен быть
выбран файл с расширением *.lod, а в опции Configure Debugger –
драйвер 8051 Simulator. Особенности работы с отладчиком хорошо показаны в Start the Debugger for the Debugger Tutorial, в который можно
попасть при последовательном выборе следующих пунктов меню:
Help|Quick Tutorial...|Debug Tutorial-Visual Debugging Tutorial. Один из
вариантов экрана отладчика показан на рис. 10.2.
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
