48274 (Программное обеспечение встроенных систем управления на базе однокристальных микропроцессоров (МП)), страница 2

2016-07-29СтудИзба

Описание файла

Документ из архива "Программное обеспечение встроенных систем управления на базе однокристальных микропроцессоров (МП)", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "контрольные работы и аттестации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48274"

Текст 2 страницы из документа "48274"

«ВЫПОЛНЯТЬ НЕПРЕРЫВНО» . . . . . «КОНЕЦ»

В этой конструкции набор операций, расположенный между ВЫПОЛНЯТЬ НЕПРЕРЫВНО и КОНЕЦ, должен повториться без конца.

В этом случае, однажды начавшись, операция проверки значений входов будет повторяться столько времени, сколько система остается в действии.

Из вышеприведенного примера можно сделать следующие выводы:

микрокомпьютер является последовательным устройством и в каждый момент времени выполняет только одну операцию;

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

МКП манипулирует только цифровыми данными. Если в системе имеются аналоговые сигналы, для преобразования входных сигналов в цифровую форму необходим АЦП, а для преобразования выходных сигналов в аналоговую форму – ЦАП.

3 Составление схем алгоритмов

Реализация любой функции с помощью микрокомпьютера всегда требует проектирования необходимой последовательности действий, получившей название алгоритма. Наиболее удобная и наглядная форма представления алгоритма решения задачи – графическая, в виде схемы. Она состоит из упорядоченной совокупности условных геометрических фигур, несущих информацию об определенном характере операций, накладываемом условии, принятых обозначениях. Основные формы, которые согласно действующим стандартам представлены в приложении А.

Рассмотрим в качестве примера задачу формирования двух наборов целых чисел, лежащих в диапазоне от -5 до +5. Путем сортировки организуется два набора, один из которых включает в себя положительные числа, а другой – отрицательные.

Схема алгоритма решения этой задачи показана на рис. 1.5.

Рисунок 1.5 – Схема алгоритма с ветвлением

4 Подпрограммы

Подпрограмма – это часть программы, используемая обычно несколько раз в процессе выполнения программы. Однако текст подпрограммы записывается программистом только один раз. Когда же программисту необходимо воспользоваться подпрограммой, достаточно указать в программе соответствующую команду вызова (обращения к подпрограмме), адресующуюся к области памяти, в которой расположена подпрограмма. С этой целью в языке программирования для большинства МП существует команда CALL (вызвать). В этой команде после кода операции (CALL) указывается имя подпрограммы, которое присвоено физическому адресу в области памяти, где расположена данная подпрограмма.

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

а) в счетчике команд фиксируется адрес команды в основной программе, которая следует за командой вызова;

б) содержимое счетчика команд (адрес возврата) загружается в стек, содержимое указателя стека модифицируется;

в) в счетчик команд загружается адрес, задаваемый командой вызова. После этого может начаться исполнение подпрограммы.

Последней выполняемой командой подпрограммы является команда RET (return – возврат). По этой команде выполняется возврат к основной программе, прерванной командой вызова. Команда возврата содержит только код операции. По этой команде происходит следующее: а) счетчик команд получает из стека адрес команды в основной программе, следующей за командой вызова; б) содержимое указателя стека соответственно модифицируется.

Основное достоинство подпрограмм заключается в том, что благодаря возможности их многократного использования, сокращается текст программы в целом. Вместо того, чтобы по мере необходимости повторять запись одного и того же фрагмента программы, достаточно оформить запись фрагмента как подпрограмму и обращаться к ней столько раз, сколько требуется в соответствии с алгоритмом решения задачи.

Из одной программы можно производить обращение к нескольким подпрограммам.

Одна подпрограмма может обращаться к другой. Такое построение подпрограмм называется ВЛОЖЕНИЕМ.

Глубина допустимого уровня вложения подпрограмм зависит от типа вычислительной машины и используемого языка программирования. Большинство современных МП и языков программирования допускает многоуровневое вложение. Как следует из вышеизложенного, использование подпрограмм – не слишком обременительная работа для программиста.

5 Программирование в машинных кодах

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

В качестве примера линейной программы в машинных двоичных кодах рассмотрим программу сложения двух чисел, одно из которых 01100100 находится в регистре общего назначения (РОН) В, а второе – 00010111 расположено в ячейке памяти с адресом 0000 0000 1000 1111. Напомним, что рассматриваемый МП имеет шестнадцатиразрядную шину адреса. Фрагмент программы приведен в табл. 1.1.

Таблица 1.1 – Программа сложения в машинных кодах

Адрес памяти

Мнемокод

0000 0000 0000 0100

01111000

0000 0000 0000 0101

00100001

0000 0000 0000 0110

10001111

0000 0000 0000 0111

00000000

0000 0000 0000 1000

10000110

0000 0000 0000 1001

01110110

. . . . . . . . . . . . . . . . .

. . . . . . . . .

0000 0000 0000 0100

00010111

Таблица 1.2 – Программа сложения в шестнадцатеричных кодах

Мнемокод

Адрес

Н - код

Vt

MOV A,B

0004

78

5

LXI H

0005

21

16

0006

8F

0007

00

ADD M

0008

86

7

HLT

0009

76

7

. . . . . . . . .

. . . . . .

. . . . . .

. . . .

008F

17

Первая команда – пересылка содержимого регистра В в аккумулятор – является однобайтовой, имеет код операции. Код операции расположен в ПЗУ по адресу 0000 0000 0000 0100, который для данной программы является начальным.

Следующая команда – трехбайтовая, имеет код операции 00100001, представляющий первый байт команды. Второй и третий байты, расположенные в очередных ячейках ПЗУ, содержат соответственно младшую и старшую части адреса 1000 1111 0000 0000, передаваемые по этой команде в регистровую пару H и L.

Микропроцессор при выполнении программы последовательно обращается к ячейкам памяти и выполняет поочередно все команды. Напомним, что коды операций и операнды хранятся в памяти в одинаковом виде и их различение осуществляется микропрограммами выполнения команд, заложенными в МП. Последняя команда имеет код 01110110 и является командой останова (HLT).

В результате выполнения программы в аккумуляторе окажется записанным число 01111011.

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

В табл. 1.2 приведен фрагмент той же самой программы, записанной в шестнадцатеричных кодах. Рядом с кодом операции показаны его мнемоническое изображение и наименования операндов, принятые в системе команд данного МП. Например, шестнадцатеричный код команды 78, имеющей мнемоническое обозначение MOV A,B, соответствует операции пересылки содержимого регистра В в аккумулятор А. В табл. 1.2 также указано число тактов Vt, необходимое для выполнения каждой команды. Для выполнения всей программы требуется 35 машинных тактов.

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

6 Программирование в мнемокодах

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

Пример 1.1. Организация счетчиков циклов. Схема алгоритма счета показана на рис. 1.6, а фрагмент программы приведен в табл. 1.3.

Рисунок 1.6 – Схема алгоритма счета циклов

Счетчиком служит один из РОН – регистр В. По команде MVI B, N в него заносится число N, определяющее количество повторяемых циклов. В данной программе N=16. Для определенности принято, что участок программы, который необходимо повторить 16 раз, начинается командой логической операции «ИСКЛЮЧАЮЩЕЕ ИЛИ» XRA A, расположенной по адресу 1002, и заканчивается командой пересылки из аккумулятора в регистр D: MOV D, A, расположенный по адресу 10А1. После каждого выполнения этого участка программы содержимое счетчика (регистра В) уменьшается на единицу посредством команды DCR B (адрес 10А2). До тех пор, пока содержимое регистра В отлично от нуля, признак Z имеет нулевое значение и программа переходит к выполнению команды, адрес 1002 который содержится во втором и третьем байтах команды JNZ (переход по отсутствию нуля). Указанный адрес отмечен в программе меткой М1, т.е. метка М1 является мнемоническим обозначением адреса 1002.

Таблица 1.3 – Программа счета циклов

Метка

Мнемокод

Операнд

Адрес

Н - код

Комментарий

Vt

. . . . . . .

. . . . . . .

. . . . . .

. . . . . .

. . . . . . . . . .

. .

MVI

B, 16

1000

06

Установка счётчика

7

1001

10

N=16 в (B)

M1:

XRA

A

1002

AF

Обнуление признака переноса

4

. . . . . . .

. . . . . . .

. . . . . .

. . . . . .

. . . . . . . . . .

. .

MOV

D, A

10A1

57

Пересылка содержимого А в регистр D (D:=A)

5

DCR

B

10A2

05

Уменьшение содержимого счётчика на 1

5

JNZ

M1

10A3

C2

Переход по условию (N) 0 к ячейке памяти с адресом 1002

10

10A4

02

10A5

10

. . . . . . .

. . . . . . .

. . . . . .

. . . . . .

. . . . . . . . . .

. .

Если в результате очередного вычитания единицы содержимое регистра В окажется равным нулю (Z=1), то программа перейдет к выполнению команды, расположенной за JNZ. Происходит выход из циклического участка программы. Поскольку регистр В имеет восемь двоичных разрядов, рассмотренная структура программы позволяет организовать счетчик от 1 до 255 циклов. При необходимости получения большого числа циклов для организации счетчика следует использовать регистровые пары (например, В и С). Загрузка такой пары осуществляется с помощью команды LXI B, а вместо команды DCR В необходимо использовать команду DCX B (декремент регистровой пары).

Пример 1.2. Определение модуля числа. При исследовании сигналов часто приходится оценивать погрешность измерения по модулю. Рассмотрим программу определения модуля числа, содержащую условный переход. В связи с тем, что отрицательные числа представляются в дополнительных кодах, при определении модуля нельзя ограничиться только отбрасыванием знака числа, информация о котором заключена в старшем бите. Если число положительное, то его надо умножить на -1. Знак можно определить, используя операцию маскирования или засылку старшего бита в триггер переноса с последующим его анализом. В данном случае эти операции нежелательны, так как сопровождаются изменением содержимого аккумулятора. Целесообразно применить команду логического сложения содержимого аккумулятора с самим собой. При этом содержимое аккумулятора не меняется, а флаги устанавливаются в соответствующие состояния. Условный переход выполняется по содержимому триггера знака S.

На рис. 1.7 изображена схема алгоритма определения модуля числа, находящегося в регистре Е. Программа работает следующим образом. Число из регистра Е пересылается в аккумулятор. В результате выполнения операции логического сложения аккумулятора с самим собой в триггер знака записывается старший бит числа. С помощью команды условного перехода осуществляется ветвление программы. Если S=0 (положительное число) не выполняется, то производится изменение знака числа и модуль числа из аккумулятора пересылается в регистр Е. Знак числа изменяется применением операции дополнения, заключающейся в инвертировании всех разрядов числа (команда CMA) c последующим прибавлением единицы к младшему разряду (команда INR A). Если условие S=0 выполняется (число положительное), то по условному переходу JM M2 три последние команды обходятся, содержимое регистра Е не меняется, а выполнение программы продолжается с адреса 01F8, соответствующего метке М2. Программа в машинных кодах с комментариями приведена в табл. 1.1.

Рисунок 1.7 – Схема алгоритма определения модуля числа

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5192
Авторов
на СтудИзбе
433
Средний доход
с одного платного файла
Обучение Подробнее