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

МУ_2542_МПТ_Тарабардин_2010

.pdf
Скачиваний:
29
Добавлен:
09.04.2015
Размер:
446.13 Кб
Скачать

Министерство транспорта Российской Федерации Федеральное агентство железнодорожного транспорта

Государственное образовательное учреждение высшего профессионального образования

САМАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ

Кафедра « Мехатроника в автоматизированных производствах»

МЕТОДИЧЕСКИЕ УКАЗАНИЯ к выполнению лабораторных работ

по дисциплине

МИКРОПРОЦЕССОРНАЯ ТЕХНИКА

Часть 1

для студентов специальности 220401 « Мехатроника» очной формы обучения

Составитель : М.А. Тарабардин

Самара

2010

УДК 004.72 (75)

Методические указания к выполнению лабораторных работ по дисциплине

« Микропроцессорная техника»,

часть 1, для студентов специальности 220401

« Мехатроника» очной формы

обучения, составитель: М.А. Тарабардин.

– Самара: СамГУПС, 2010. – 35 с.

Утверждены на заседании кафедры « Мехатроника в автоматизированных

производствах» 2 апреля 2010 г., протокол № 8.

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

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

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

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

Составитель: Михаил Анатольевич Тарабардин.

Рецензенты: д.т.н., доцент, заведующий кафедрой « Информатика» СамГУПС Г.Ю. Ермоленко к.т.н., доцент кафедры « Мехатроника в автоматизированных

производствах» СамГУПС В.А. Засов.

Редактор Е.Ю. Логинова. Компьютерная верстка

Подписано в печать _______ Формат 60х90 1/16. Бумага писчая. Печать оперативная. Усл. п.л.____. Тираж 100 экз. Заказ ______

©Самарский государственный университет путей сообщения, 2009

ВВЕДЕНИЕ

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

Лабораторные работы, представленные в данных методических указаниях, можно условно разделить на два цикла. В первом цикле работ, изложенном в первой части методических указаний, рассмотрены примеры решения задач вычислительного характера в системах на базе микропроцессора Intel8080. Программирование осуществляется на языке Assembler. Второй цикл работ, изложенный во второй части методических указаний, посвящён программированию реальных вычислительных устройств и мехатронных систем, содержащих микропроцессорные модули управления. Программирование осуществляется на языках Delphi и C++.

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

ЛАБОРАТОРНАЯ РАБОТА №1 ИЗУЧЕНИЕ МАШИННОГО ПРЕДСТАВЛЕНИЯ ДАННЫХ

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

Краткие теоретические сведения

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

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

поэтому используют только два уровня – низкий уровень электрического сигнала, соответствующий двоичному « нулю», и высокий уровень электрического сигнала (обычно 5 Вольт), соответствующий двоичной « единице». Таким образом, каждая линия передачи информационного сигнала может выражать только два устойчивых логических состояния – 0 и 1. Полученная с линии единица информации называется битом, или двоичным разрядом.

Для того чтобы задать значение каких-либо данных, одного бита, как правило, недостаточно. Поэтому информационные линии группируют либо параллельно, либо передают биты данных по одной линии « по очереди» последовательно. Если сгруппировать две информационные линии, каждая из которых может передавать два возможных уровня электрического сигнала, то можно получить 2x2=4 возможные комбинации этих сигналов (00, 01, 10 и 11). При группировке трёх линий можно получить 2х2х2=8 комбинаций сигналов

(000=0, 001=1, 010=2, 011=3, 100=4, 101=5, 110=6, 111=7). При группировке N

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

называют байтом. Каждым байтом информации можно описать 28=256 возможных значений данных. Каждая ЯП в вычислительных системах представлена восьмью физическими носителями электрического заряда, например, конденсаторами, выполненными на базе полевых транзисторов. Отсутствие заряда соответствует логическому « нулю», а наличие заряда соответствует логической « единице».

Таким образом, каждый байт памяти может хранить число в диапазоне от 0 (все восемь двоичных разрядов нули) до 255 (все восемь двоичных разрядов единицы). Если необходимо хранить число со знаком, то один из битов несёт информацию о знаке. Семь оставшихся битов несут информацию о хранимом числе. В этом случае в каждой ЯП можно хранить число в диапазоне от –128 до 127. Для хранения данных в более широком диапазоне байты группируют по 2 (машинное слово), 4 (двойное машинное слово) либо 8 (64-разрядное машинное слово).

При программировании на языках высокого уровня разрядность переменных определяется их типом. Переменная беззнакового типа может принимать значения в диапазоне [0, +2N-1], переменная знакового типа может принимать значения в диапазоне [-2N-1, +2N-1-1], где N – разрядность типа. Так, например, переменные типа INTEGER (или INT в С++), могут принимать значения в диапазоне [-231,+231-1], т.е. [-2147483648, 2147483647], т.к. разрядность типа

INTEGER равна 32 (4 байт=32 бит) со знаком.

Значения байта принято записывать в виде 8 двоичных цифр. Если число можно описать меньшим количеством битов, то слева принято дописывать нули, чтобы количество бит составило 8. При записи двоичных чисел часто оперируют понятиями « старший» бит и « младший» бит (или нулевой бит). Данные понятия аналогичны понятиям старшего и младшего разряда десятеричного числа, где разряд единиц занимает позицию младшего разряда, разряд сотен – более старшего и т.д. В двоичной системе эта структура идентична десятеричной. Бит, записанный справа, называют младшим разрядом, а слева – старшим. При группировке байтов информации оперируют понятиями старший байт и младший байт. На рис. 1. проиллюстрирован смысл описанных терминов.

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

Рис.1. Структура 16-разрядного двоичного числа

числа в двоичной системе счисления записываются слишком длинными комбинациями нулей и единиц. Например, код цвета точки на экране задаётся 4 байтами информации. Один байт задаёт уровень красного цвета (256 уровней), второй – уровень зелёного, третий – уровень синего, четвёртый – яркость точки. Таким образом, для записи цвета точки на экране необходимо использовать число длиной 32 двоичных разряда. Понятно, что это неудобно, особенно в тех случаях, когда таких точек необходимо описать довольно много.

Для удобства записи и восприятия машинных данных используют кратную двоичной шестнадцатеричную систему счисления. Шестнадцатеричная система счисления для записи числа должна использовать 16 символьных знаков. Первые 10 представлены известными цифрами 0-9, а остальные 6 – буквами латинского алфавита A-F. В таком случае 1 шестнадцатеричный разряд описывает 16 чисел (4 двоичных разряда), два разряда – 16х16=256 чисел (8 двоичных разрядов), N разрядов – 16N чисел (4N двоичных разрядов). Если число находится в пределах 15, то для его задания используется один шестнадцатеричный разряд. Если число больше 15, то для его описания необходимо использовать два или более разрядов. Например, число 10 соответствует цифре A в шестнадцатеричной системе, 11 – B, 15 – F. Число 16 будет записано как 10, 17 – 11, 25 – 19, а 26 запишется как 1А, а не, как казалось бы, 20. Число 31 запишется как 1F, а 32 – 20 и т.д.

Рассмотрим алгоритм перевода чисел из десятеричной системы в двоичную. При этом будем руководствоваться правилом: в конце десятеричного числа ставится буква d (decimal – десятеричный), а в конце двоичного числа буква b (binary – двоичный). Это поможет избежать путаницы при записи чисел в различных системах счисления.

Чтобы перевести число из десятеричной системы в двоичную, необходимо его разделить на 2 с остатком. Остаток от деления в таком случае может принимать значения 0 или 1. Полученный остаток от деления запишется в младший (нулевой) разряд двоичного числа. Далее полученную от деления целую часть снова необходимо разделить на 2 с остатком. Остаток от деления запишется теперь в первый разряд двоичного числа, а получившуюся при делении целую часть снова необходимо поделить на 2 с остатком. Процедура повторяется до тех пор, пока целая часть от деления не станет равной нулю. Блок-схема алгоритма перевода числа из десятеричной системы в двоичную приведена на рис. 2.

Если полученное число записано менее чем 8 двоичными разрядами, то слева принято дописать нули в таком количестве, чтобы число разрядов стало равно 8.

Рис. 2. Блок-схема алгоритма перевода числа в двоичную систему

Рассмотрим алгоритм перевода двоичного числа в десятеричную систему счисления. Для этого необходимо найти сумму произведения всех битов двоичного числа на 2 в соответствующей степени (1). При этом следует помнить, что младший бит имеет номер 0, а не 1.

N −1

 

Xd = Xb(i) × 2i ,

(1)

i=0

где N – разрядность двоичного числа Xb.

Перевод числа из десятеричной системы в шестнадцатеричную аналогичен рассмотренному ранее переводу числа в двоичную систему. Отличие состоит в выборе делителя. Теперь в качестве него выбирается число 16. Обратный перевод аналогичен (1), но в качестве основания степени выбирается 16, а не 2. Для того чтобы не возникало путаницы при записи чисел в различных системах счисления, для чисел в шестнадцатеричной системе принято в конце дописывать букву h (hexadecimal – шестнадцатеричный).

Чтобы перевести число из двоичной системы счисления в шестнадцатеричную, необходимо разбить двоичное число на так называемые тетрады, представляющие собой комбинацию из 4 соседних двоичных разрядов. Каждую двоичную тетраду необходимо заменить соответствующей шестнадцатеричной цифрой. Соответствие тетрад и шестнадцатеричных цифр представлено в табл. 1.

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

 

 

 

Таблица 1

 

Соответствие двоичных тетрад шестнадцатеричным цифрам

 

 

 

 

Число

 

Двоичная тетрада

Шестнадцатеричная цифра

0

 

0000

0

1

 

0001

1

2

 

0010

2

3

 

0011

3

4

 

0100

4

5

 

0101

5

6

 

0110

6

7

 

0111

7

8

 

1000

8

9

 

1001

9

10

 

1010

A

11

 

1011

B

12

 

1100

C

13

 

1101

D

14

 

1110

E

15

 

1111

F

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

Оборудование для выполнения работы

Для выполнения данной лабораторной работы специализированное оборудование не требуется.

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

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

1. Рассмотрим перевод числа 56d в двоичную систему счисления. Для этого необходимо воспользоваться алгоритмом, схема которого представлена на рис. 2. На рис. 3. показано применение данного алгоритма при переводе числа 56d в

Рис. 3. Перевод числа в двоичную систему счисления

двоичную систему счисления. Для наглядности используется деление « уголком». Как видно из примера, 56d=00111000b.

2. Рассмотрим перевод числа 00111000b в десятеричную систему счисления. Для этого необходимо воспользоваться формулой (1). Тогда получим

00111000b = 0 × 20 + 0 × 21 + 0 × 22 +1× 23 + 1× 24 +1× 25 + 0 × 26 + 0 × 27 = = 0 ×1 + 0 × 2 + 0 × 4 +1×8 +1×16 +1× 32 + 0 × 64 + 0 ×128 = 8 +16 + 32 = 56d.

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

3. Рассмотрим перевод числа 167d в шестнадцатеричную систему счисления. Для этого необходимо воспользоваться алгоритмом, схема которого представлена на рис. 2 (применительно к шестнадцатеричной системе счисления). На рис. 4. показано применение данного алгоритма при переводе числа 167d в шестнадцатеричную систему счисления. Как видно из примера, 167d=A7h.

Рис. 4. Перевод числа в шестнадцатеричную систему счисления

4. Рассмотрим перевод числа A7h в десятеричную систему счисления. Для этого необходимо воспользоваться формулой (1) для шестнадцатеричной системы. Тогда получим A7h = 7 ×160 +10 ×161 = 7 ×1 +10 ×16 = 7 +160 = 167d.

5.Рассмотрим перевод числа 00111000b в шестнадцатеричную систему. Для этого указанное число необходимо разбить на две тетрады 0011 и 1000, а затем заменить их на соответствующие им шестнадцатеричные цифры. Используя данные, приведённые в табл. 1, получим, что двоичная тетрада 0011 соответствует цифре 3, а 1000 соответствует 8. Следовательно, 00111000b=38h. Если число 38h перевести в десятеричную систему, то получим число 56d.

6.Рассмотрим перевод числа A7h в двоичную систему счисления. Чтобы осуществить данный перевод, снова воспользуемся табл. 1. Шестнадцатеричной цифре A соответствует двоичная тетрада 1010, а цифре 7 – 0111. Следовательно, A7h=10100111b. Если перевести число 10100111b в десятеричную систему счисления, то получим 128+32+4+2+1=167.

7.Рассмотрим сложение двоичных чисел 00111000b и 00001101b. Процедура сложения выполняется побитно в соответствии с правилом: 0+0=0, 0+1=1, 1+1=0 с переносом 1 в старший разряд (рис. 5).

Рис. 5. Сложение двоичных чисел

8. Рассмотрим сложение чисел 1Ch и 2Eh. Процедура сложения выполняется поразрядно с переносом в старший разряд в случае необходимости (рис. 6).

Рис. 6. Сложение шестнадцатеричных чисел

9. Переведите самостоятельно числа 15, 29, 179, 206 в двоичную систему счисления. Переведите числа 89, 329, 260, 200 в шестнадцатеричную систему счисления. Переведите числа A8h, D6h, 44h, 3A5h,11001010b,11110010b в

десятеричную систему счисления. Переведите числа 8Ah, 9Ch в двоичную систему счисления. Переведите числа 11111010b, 01011010b, 11000011b в шестнадцатеричную систему счисления. Найдите сумму чисел 2Ah и 74h, 11h и BEh, 01101111b и 00011010b.

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

1.Титульный лист работы.

2.Формулировка цели и задач работы.

3.Результаты используемых операций перевода и суммирования.

4.Краткие выводы по проделанной работе.

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

1.Что такое двоичная система счисления? Для чего её используют?

2.Что такое шестнадцатеричная система счисления? Для чего её используют?

3.Каков алгоритм перевода чисел из двоичной системы счисления в десятеричную?

4.Каков алгоритм перевода чисел из шестнадцатеричной системы счисления в десятеричную?

5.Каков алгоритм перевода чисел из десятеричной системы счисления в двоичную?

6.Каков алгоритм перевода чисел из десятеричной системы счисления в шестнадцатеричную?

7.Каков алгоритм перевода чисел из шестнадцатеричной системы счисления в двоичную?

8.Каков алгоритм перевода чисел из двоичной системы счисления в шестнадцатеричную?

9.Дайте объяснение терминам « бит», « байт», « старший бит», « старший байт», « младший бит», « младший байт», двоичный разряд, двоичная тетрада.

ЛАБОРАТОРНАЯ РАБОТА №2 ИЗУЧЕНИЕ СИСТЕМЫ КОМАНД 8-РАЗРЯДНОГО

МИКРОПРОЦЕССОРА INTEL 8080. КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ

Цель работы: изучить систему команд микропроцессора i8080, освоить работу с эмулятором микропроцессора i8080 CPM, изучить основные команды передачи данных в микропроцессорных системах на базе процессора i8080.

Краткие теоретические сведения

Микропроцессор (МП) – универсальное программно-управляемое устройство, предназначенное для цифровой обработки информации и управления процессом этой обработки, выполненное на одной или нескольких больших интегральных схемах (БИС).

Первый МП i4004 (буква «i» означает Intel) был 4-разрядным, за ним на рынок поступили более совершенные МП, среди которых следует выделить 8- разрядный МП i8080, который благодаря удачной архитектуре и удобной системе команд стал своего рода стандартом для разработок 8-разрядных МП [1,2].

Термин « восьмиразрядный» означает, что МП оперирует с 8-разрядными двоичными числами. Несмотря на это, процессор i8080 имеет 16-разрядную шину адреса для взаимодействия с памятью и внешними устройствами. Так как адрес ЯП в этом случае задаётся 16-разрядным двоичным числом (словом), МП i8080 может производить обмен данными с 216 ячейками оперативной памяти размером 1 байт (8 бит) каждая. Это означает, что максимальный поддерживаемый микропроцессором i8080 объём оперативной памяти ограничивается 64 килобайтами (65536 байт).

Процессор i8080 имеет встроенную сверхоперативную память, представленную регистрами. Регистры находятся внутри кристалла микропроцессора и имеют такую же размерность, как и ячейки оперативной памяти – 1 байт. Регистры МП можно условно классифицировать следующим образом: аккумулятор, регистры общего назначения и регистр состояния, или флаговый регистр, имеющий размерность 5 бит. Регистры, в отличие от ячеек памяти, не имеют адреса. Они различаются по названиям (A, B, C, D, E, H, L и F).

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

Регистры общего назначения (B, C, D, E, H и L) служат для хранения в них данных, а также выступают в роли операндов в командах передачи данных. Регистры общего назначения могут быть сгруппированы в регистровые пары BC, DE и HL. Это необходимо в тех случаях, когда операнд имеет разрядность более 8 бит, а также в случае работы с 16-разрядными адресами ячеек памяти.

Регистр состояния (F), или флаговый регистр, служит для размещения в нём информации о результатах выполнения операций. Размер данного регистра составляет 5 бит. Следовательно, в данном регистре могут храниться 5 признаков выполнения операции: признак нулевого результата выполнения операции, признак переноса в старший разряд, признак вспомогательного переноса (переноса в 4-й разряд), признак чётности нулей в байте и признак отрицательного результата выполнения арифметической операции. Опираясь на данные, хранимые в регистре F, выполняются команды условного перехода.

Кроме рассмотренных регистров следует отметить регистры, отвечающие за ход выполнения программы. Указатель стека SP содержит адрес вершины стековой области памяти или адрес последней команды, записанной в эту область. SP адресует к ЯП, в которую записана команда, выполняемая первой после возвращения из подпрограммы. Программный счетчик команд PC используется для хранения адреса текущей команды. После выборки из оперативной памяти текущей команды содержимое программного счетчика PC увеличивается, формируя адрес следующей команды.