Логическое «НЕ», логическое отрицание, инверсия, «Х».

Принцип операции :меняет значение на противоположное 0 на 1 и наоборот. Этот принцип иллюстрирует следующий пример из электротехники (нормально выключенный контакт:

X Y

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

Это логическое действе описываетследующая таблица истинности:

X Y

В электронике применяют логические элементы :инверторы, условно-графическое изображение которого приведено ниже:

 
  логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

       
    логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru
 
  логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

Пример : 10011001B=01100110B

  1. Регистровый метод:

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru CPL A ;A → A

  1. Прямая битовая адресация:

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru CPL C ;С → С

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru CPL bit ;(bit) → (bit)

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

Приоритеты действий в порядке убывания:

Действия в скобках;

Инверсия;

Умножение, деление;

Логические действия (лог. умножение, лог.сложение, исключающее ИЛИ);

Сложение, вычитание

При равенстве приоритетов действия выполняются слева на право

Задание3: Решить математическое выражение, используя все методы адресации, кроме косвенно-регистровой. (Листинг решения приведён ниже):

 
  логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru [(20H)\/3CH \/ (21H)+(22H)/\07H] → (23H)

ORG 0

MOV A , 20H ; (20H) →A

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru CPL A ; A → A

ORL A , #3CH ; A V 3CH→A

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru XRL A , 21H ; A V (21H) →A

MOV R0, A ; A →R0

MOV A, 22H ; (22H) →A

ANL A, #07 ; A /\ 07→ (A)

ADD A , R0 ; A + R0 → A

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru CPL A ; A →A

MOV 23H , A ; A → (23H)

L1: JMP L1 ;переход на метку L1(зацикливание на этом месте)

END

Задание4: Решить математическое выражение (Листинг решения приведён ниже):

 
  логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru [(20H) V 3CH V (21H)+(22H)/\07H] (23H)

ORG 0

MOV R0 , #20H ; 20H→ R0

MOV A , @ R0 ; ((R0)) →A

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru CPL A ; A→A

ORL A , #3CH ; A V 3CH →A

INC R0 ; R0 + 1→R0

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru XRL A , @R0 ; A V ((R0)) →A

ANL 22H , #07 ; (22H) /\ 07→ (22H)

INC R0 ; R0 + 1→R0

ADD A , @R0 ; A + ((R0)) →A

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru CPL A ; A →A

INC R0 ; R0 + 1 →R0

MOV @R0 , A ; A→R0

L1: JMP L1 ;переход на метку L1(зацикливание на этом месте)

END

Задание 5: Самостоятельно написать программу для решения следующего математического задания.

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru [20H*3CH V (21H)+(22H):07H] (23H)

4. Содержание отчёта

3.1. Тема и цель работы

3.2. Листинги сделанных самостоятельно программ.

3.3. Выводы

5. Контрольные вопросы

5.1 Понятие операнда.

5.2 Регистровый метод адресации. Примеры команд с этим методом.

5.3 Прямойбайтовый метод адресации. Примеры команд с этим методом.

5.4 Прямойбитовый метод адресации. Примеры команд с этим методом.

5.5 Непосредственный метод адресации. Примеры команд с этим методом.

5.6 Косвенно – регистровый метод адресации. Примеры команд с этим методом.

5.7 Косвенный метод адресации по сумме базового и индексного регистров. Примеры команд с этим методом.

5.8 Логическое умножение. Примеры команд с разными методами адресации.

5.9 Логическое сложение. Примеры команд с разными методами адресации.

5.10 Логическое исключающее «ИЛИ». Примеры команд с разными методами адресации.

5.11 Инверсия. Команда инверсии.

5.12 Написать программу для решения задания, заданного преподавателем.

6. Введение в интегрированную отладочную среду ProView для микроконтроллеров семейства MCS-51, 251, XA

ProView фирмы Franklin Software Inc. – интегрированная среда разработки программного обеспечения для однокристальных микроконтроллеров семейства Intel 8051 и его клонов. Она включает в себя всё, что нужно для создания, редактирования, компиляции, трансляции, компоновки, загрузки и отладки программ:

1. стандартный интерфейс Windows,

2. полнофункциональный редактор исходных текстов с выделением синтаксических элементов цветом,

3. организатор проекта,

4. транслятор с языка C,

5. ассемблер,

6. отладчик,

7. встроенную справочную систему.

Среда разработки подобна Visual C++ Microsoft и Borland C++ для Windows. Пользователи, знакомые с любым из этих изделий, будут чувствовать себя в ProView, как дома.

Первый этап разработки программы – запись её исходного текста на каком-либо языке программирования.

Затем производится компиляция или трансляция его в коды из системы команд микроконтроллера, используя транслятор или ассемблер. Трансляторы и ассемблеры – прикладные программы, которые интерпретируют текстовый файл, содержащий исходный текст программы, и создают объектные файлы, содержащие объектный код.

После компоновки объектных модулей наступает этап отладки программы, устранения ошибок, оптимизации и тестирования программы.

ProView объединяет все этапы разработки прикладной программы в единый рекурсивный процесс, когда в любой момент времени возможен быстрый возврат к любо му предыдущему этапу.

ProView имеет следующие компоненты.

6.1.Оптимизирующий кросс-компилятор C51.

Язык C - универсальный язык программирования, который обеспечивает эффективность кода, элементы структурного программирования и имеет богатый набор операторов. Универсальность, отсутствие ограничений реализации делают язык C удобным и эффективным средством программирования для широкого разнообразия задач. Множество прикладных программ может быть написано легче и эффективнее на языке C, чем на других более специализированных языках.

C51 - полная реализация стандарта ANSI (Американского национального института стандартов), насколько это возможно для архитектуры Intel 8051. C51 генерирует код для всего семейства микроконтроллеров Intel 8051. Транслятор сочетает гибкость программирования на языке C с эффективностью кода и быстродействием ассемблера.

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

8. глубокого знания системы команд процессора не требуется, элементарное знание архитектуры Intel 8051 желательно, но не необходимо;

9. распределение регистров и способы адресации управляются полностью транслятором;

10. лучшая читаемость программы, используются ключевые слова и функции, которые более свойственны человеческой мысли;

11. время разработки программ и их отладки значительно короче в сравнении с программированием на ассемблере;

12. библиотечные файлы содержат много стандартных подпрограмм, которые могут быть включены в прикладную программу;

13. существующие программы могут многократно использоваться в новых программах, используя модульные методы программирования.

6.2. Макроассемблер A51.

Ассемблер A51 совместим с ASM51 Intel для всего семейства микроконтроллеров Intel 8051. Ассемблер транслирует символическую мнемонику в перемещаемый объектный код, имеющий высокое быстродействие и малый размер. Макросредства ускоряют разработку и экономят время, поскольку общие последовательности могут быть разработаны только один раз. Ассемблер поддерживает символический доступ ко всем элементам микроконтроллера и перестраивает конфигурацию для каждой разновидности Intel 8051.

A51 транслирует исходный файл ассемблера в перемещаемый объектный модуль. При отладке или при включенной опции “Include debugging information” этот объектный файл будет содержать полную символическую информацию для отладчика/имитатора иливнутрисхемного эмулятора.

6.3.Компоновщик L51.

Компоновщик объединяет один или несколько объектных модулей в одну исполняемую программу. Компоновщик размещает внешние и общие ссылки, назначает абсолютные адреса перемещаемым сегментам программ. Он может обрабатывать объектные модули, созданные транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel.

Компоновщик автоматически выбирает соответствующие библиотеки поддержки и связывает только требуемые модули из библиотек. Установки по умолчанию для L51 выбраны так, чтобы они подходили для большинства прикладных программ, но можно определить и заказные установки.

6.4.Отладчик/симулятор WinSim51.

Отладчик исходных текстов используется с транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel. Отладчик/симулятор позволяет моделировать большинство особенностей Intel 8051 без наличия аппаратных средств. Можно использовать его для проверки и отладки прикладной программы прежде, чем будут изготовлены аппаратные средства. При этом моделируется широкое разнообразие периферийных устройств, включая последовательный порт, внешний ввод - вывод и таймеры.

Начало работы

Запуск интегрированной среды ProView32 осуществляется через меню Пуск(Windows):Пуск ->Программы -> Franklin Software -> ProView32.

Далее необходимо создать новый файл. Для этого в разделе меню File выбираем пункт New, в появившемся окне выбираем Assembler Files(см. рис.1).

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

Рис. 1. Выбор типа программы

Новый файл необходимо сохранить на диск (File->Save as…), присвоив ему имя, состоящее из латинских букв и цифр, длина имени не должна превышать 8 символов, расширение файла - asm. Пример имени «Lab1.asm». Теперь можно приступать к написанию программы для микроконтроллера на языке Ассемблер.

Рассмотрим простейшую программу(Задание1 этих методических указаний). После того как текст программы набран и сохранен приступаем к компиляции программы - переводу текста в машинный код, предназначенный для загрузки в память программ микроконтроллера.

Для компиляции программы необходимо выбрать пункт меню Project -> Build all. ProView отображает окно, показывая текущее состояние процесса. Когда процесс компиляции закончится, в окне сообщений (Message) (рис.3) отображается сообщение завершения. Если были обнаружены какие-нибудь ошибки, о них сообщается здесь же.

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

Рис. 3. Окно сообщений Message

Если программа не содержит ошибок, которые отображаются в окне то можно запускать отладчик (меню Debug -> Start). При первом запуске отладчика появится окно (см. рис. 4), в котором необходимо указать тип микроконтроллера (Microcontroller: 80c51), а также тактовую частоту (Frequency) в мегагерцах.

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

Рис. 4. Выбор типа контроллера и тактовой частоты

Запустив отладчик, мы видим несколько окон (см. рис. 5):

- окно с текстом программы;

- окно кода Code, в котором каждой инструкции на ассемблере соответствует её машинный код;

- окно основных регистров Main Registers, в котором отображено текущее состояние каждого из регистров;

В строке состояния показано время, за которое микроконтроллер выполнил команды программы с момента старта до курсора.

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

Рис. 5 Экран режима Debug

Используя меню Viewотладчика можно добавлять новые окна. Например, пункт меню View->Data dumpпозволяет отобразить окна с содержимым различных областей памяти данных микроконтроллера:

Xdata – внешняя память (ОЗУ) данных;

Data –внутренняя память данных (внутреннее ОЗУ);

Sfr – область регистров специальных функций (РСФ);

Bit – область прямо адресуемых битов.

В наших заданиях необходимо вводить тестовые числа в ячейки памяти ОЗУ(внутренней памяти данных) для проверки правильности работы написанных программ. Для этого выбираем пункт меню View->Data dump-> Data view(рис.6). В окне Data viewотображается содержимое ячеек ОЗУ, которое группируется по 8 ячеек в строке с указанием адреса первой ячейки в группе (адрес указан слева с двоеточием). Для проверки задания 1 : [(20H)*10H – (21H)/07H] → ( 22H) необходимо загрузить тестовые числа в ячейки с адресами 20H и 21H (например, в (20H) загрузим 05H , а в (21H) загрузим С4H (см. рис.6)). При вводе данных в ячейки не забываем нажимать кнопку ENTER на клавиатуре.

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

Рис. 6 Окно отображения содержимого ячеек ОЗУData view

Для удобства работы оптимизируем содержимое экрана: окно кода Codeдля работы в нашем курсе работ нам не нужно, поэтому его можно свернуть в трей, далее подгоним размеры окна с программой так, чтобы были видны команды и хватило места для окон Data viewи Main Registers(см. рис.7).

Перед запуском программы необходимо нажать кнопку Animate логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru , затем нажать кнопку сброса Reset логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru и запустить программу кнопкой Run логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru .

Так как по условию задания 1 : [(20H)*10H – (21H)/07H] → ( 22H) результат запоминается в ячейке с адресом 22H, то смотрим содержимое этой ячейки после выполнения программы в окне Data view. На рис.7 в этом окне результат равен 34Н.

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

Рис.7 Окно Debug после выполнения программы

Для проверки этого результата вызываем калькулятор Windows через меню Пуск(Windows):Пуск ->Программы -> Стандартные -> Калькулятор. Переводим его в инженерный режим(рис. 8). Переводим в режим работы в шестнадцатеричной системе счисления (переключатель Hex) и ограничиваем размер чисел одним байтом (переключатель 1байт).

логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru

Рис.8 Окно калькулятора Windows

Программу проверяем в соответствии с заданием с соблюдением приоритетов. По условию задания 1 : [(20H)*10H – (21H)/07H] → ( 22H) первыми по приоритету необходимо выполнить умножение и деление, а затем вычитание. Выполним эти дейтвия с тестовыми данными и запишем подробно результаты промежуточных вычислений:

05Н*10Н=50Н

С4Н:07Н=1СН

50Н-1СН=34Н

Как видим, результат расчетов совпал с результатом в окне Data view, что говорит о правильности программы.

Если результат не совпадает, то необходимо выяснить причину ошибки. Отладку программы в этом случае удобно производить в пошаговом режиме (кнопка Step into логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru или F7). Если вы используете пошаговый режим, то при каждом нажатии кнопки F7 будет выполняться только одна инструкция на языке ассемблера. При этом в открытых вами окнах с регистрами и содержимым памяти будет обновляться информация в соответствии с ходом выполняемой программы. Сравнивая результаты выполнения шага по содержимому в окне Main Registers с результатами промежуточных вычислений выявляем ошибки в вашей программе.

Если во время отладки программы выяснилось, что алгоритм необходимо скорректировать, то следует прервать процесс отладки, выбрав пункт меню Debug->Terminate. После внесения необходимых изменений программу необходимо повторно откомпилировать (пункт меню Project -> Build all) и повторить процесс отладки.

Если ваша программа достаточно большая и требуется отладить только некоторые её фрагменты, то обычно используют точки останова (Breakpoint), которые устанавливают в начале интересующего фрагмента программы. При этом переход к точке останова производится нажатием кнопки GO(Ctrl-F9). логическое «НЕ», логическое отрицание, инверсия, «Х». - student2.ru Переход может занять от нескольких секунд до нескольких минут, однако он будет быстрее, чем в режиме пошаговой отладки.

6. СПИСОК ЛИТЕРАТУРЫ

1. Сташин В.В., Урусов А.В.Молногонцева О.Ф. "Проектирование цифровых устройств на одно кристальных микроконтроллерах" – М.:Энергоатомиздат 1990. - 224с.

2. Самофалов К.Г. "Микропроцессоры" - Киев: Техника, 1986. - 278с.

3. Каган Б.Н., Сташин В.В. "Основы проектирования микропроцесорных устройств автоматики." - М.: Энергоиздат 1987. - 304 с.

4. Справочник под редакцией Хвощ С.Т. "Микропроцессоры и микроЭВМ в системах автоматического управления." - Л.: Машиностроение, 1987. -640 с.

5. Микушин А. В. Занимательно о микроконтроллерах. — СПб.: БХВ - Петербург, 2006. — 432 с.

6. Белов А.В. Конструирование устройств на микроконтроллерах — Санкт - Петербург: Наука и техника, 2005. - 256 с.

7. "Полупроводниковые приборы. Диоды. Оптоэлектронные приборы" / А.Б.Гитцевич и др. - М.: Радио и связь, 1988. - 592 с.

2. Шило В.Л. "Полупроводниковые цифровые микросхемы. Справочник." - М.: Радио и связь. 1987. - 352 с.

3. "Микропроцессоры в 3х томах для техн. вузов" /В.Д. Вернер и др. под редакцией А.Н. Преснухина -Минск: Высшая школа. 1987-303с. ил.

Наши рекомендации