Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Применение микроконтроллеров MCS-51 при проектировании электронных устройств. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
9. ОСОБЕННОСТИ МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА MCS-251
Несмотря на то что первые микросхемы семейства MCS-51 появи­лись более 15 лет назад получили второе дыхание в виде нового поколения – семейства MCS­251 [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 вы нашли иконку, соответствующую Com­pass/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 (добавить) и Re­move (удалить) изменяется состав файлов проекта (могут включаться исходные файлы на языках Си и Ассемблер), а с
помощью кнопок 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]