Методические указания для практических занятий по дисциплине мдк. 02. 01
Скачать 7.37 Mb.
|
Most Significant Character Hex 0 1 2 3 4 5 6 7 0 NUL DLE Space 0 P ' P 1 SOH DC1 ! 1 A Q a q 2 STX DC2 II 2 В R b г 3 ETX DC3 # С 3 с s 4 EOT DC4 $ 4 D T d : 5 ENG NAK % 5 E u e u Least 6 AC К SYN & 6 F V f V Significant 7 Bell ETB i 7 G w g w Character f! BS CAN t a H X h X 9 HT EM > & I Y i 'J A LF SJB * - J z j z В VT ESC + F К [ к { С FF FS i < L \ i I D CR GS = M ] m } E SO 4S > N Л n - F SI JS I 0 _ 0 DEL Рисунок 9 - Таблица ASCII символов 259 .include "p33FJ 256GP710.i nc" .equ ms g_out, 0x800 ;начальный адрес новой строки .text ms g_i n: .as cii "C ogito ergo sum!" ; исходная ст рок а .global __res et __res et: ; определяем номер страницы, в которой лежит ; исходная строка mov #tblpage(msg_in), W0 ; помещаем номер страницы в регистр -указатель ; на текущую строку mov W0, PSVP AG ; определяем смещение местоположения исходной строки ; от начала страницы и получаем эффективный адрес ; начала исходной строки, помещаем его в W6 mov #tbloffs et(m s g_i n), W6 ; помещаем адрес начала новой строки в W7 mov #ms g_out , W7 ; задаем параметры цикла (за один цикл обрабатывается ; по 2 символа) do #7, end ; считываем 2 байта в регистры W2 и W3 tblrdl.b [W6++], W2 tblrdl.b [W6++], W3 ; сдвигаем влево на 8 бит содержимое W2 и помещаем в W4 sl W2, #8, W4 ее прочитать/записать, необходимо воспользоваться специальными командами: TBLRDL, TBLRDH, TBLWTL, TBLWTH - первые из них предназначены для чтения младшего слова и старшего слова, две последние для записи соответственно. Для корректной работы данных инструкций сначала необходимо записать старшую часть адреса в регистр PSVPAG, и младшую часть адреса строки в любой рабочий регистр (как показано в примере). Для чтения/записи слова (16 бит) используют синтаксис Задание для самостоятельного выполнения 1. Создайте новый проект. Процессор - dsPIC33FJ256GP710. 2. Подключите необходимые библиотеки. ; удваиваем первый считанный символ ior 4 W 2 W 4 W ; помещаем удвоенный символ в новую строку mov W4, [W7++] ; делаем аналогичное удвоение второго считанного символа sl W3, #8, W4 ior 4 W 3 W 4 W mov W4, [W7++] end: nop nop .end Строка msg_in располагается в памяти программ. Для того чтобы 260 3. Подключите отладчик (симулятор), встроенный в среду MPLAB IDE. 4. Запустите программу из примера и проверьте в пошаговом режиме ее выполнение. 5. Осуществите вызов окна File Register в меню View и проверьте содержимое области памяти, начиная с ячейки с адресом 0800. 6. Разработайте схему алгоритма и программу, выполняющую преобразование введённой строки по алгоритму указанному в таблице в соответствии с номером варианта 7. Откройте окно Watch и внесите в него все регистры, которые используются в коде. Для наглядности в окне Watch необходимо с помощью щелчка правой кнопки мышки в шапке таблицы сделать видимым столбец Char. 8. В пошаговом режиме отладьте код, контролируя изменение регистров в окне Watch. После отладки программы, покажите код и результаты работы программы преподавателю. 9. Подготовьте отчет в соответствие с требованиями на стр. 21. Контрольные вопросы № Варианта Задание 1 Первый символ копируется один раз, второй - дублируется, третий - утраивается, четвёртый - копируется четыре раза, пятый - копируется пять раз, шестой - один раз, седьмой - два раза и т.д. 2 Все символы «пробел» удаляются из исходной строки, остальные символы - копируются. 3 Первый символ копируется четыре раза, второй - три раза, третий - два раза, четвёртый - один раз, пятый - четыре раза, шестой - три раза, седьмой - два раза и т.д. 4 Все символы с нечётными индексами копируются три раза, остальные - копируются один раз. 5 Все символы цифр от нуля до девяти утраиваются, остальные - копируются один раз. 6 Каждый третий символ строки удваивается, остальные - копируются один раз. 7 Все символы цифр от трех до восьми копируются два раза, остальные - копируются один раз. 8 Все символы с чётными индексами удаляются из строки, остальные - копируются один раз. 9 Все символы цифр от нуля до девяти удаляются из строки, остальные - копируются один раз. 10 Все прописные буквы латинского алфавита заменяются строчными буквами. Остальные символы копируются. 11 Каждый четвёртый символ строки копируется четыре раза, остальные - копируются один раз. 12 Все символы заглавных букв латинского алфавита утраиваются. 261 1. Назовите способы адресации, используемые в командах вашей программы. 2. Назовите назначение каждой команды в коде вашей программы. 3. Назовите основные инструкции сравнения. 4. Назовите основные инструкции условного и безусловного переходов. 5. Почему в примере цикл копирования повторяется 8 раз? 6. Для чего служит регистр PSVPAG? 7. Какие инструкции смещения используются в примере? Практическая работа №51. Установка периферийных устройств. Цель работы: ознакомиться с началами программирования периферийных USB устройств с использованием библиотеки libusb 1.0. Теоретическая часть USB – промышленный стандарт, определяющий интерфейс между компьютерами и подключаемыми к ним периферийными устройствами. В частности, он определяет механические параметры кабелей и разъемов, электрические параметры и протоколы передачи данных. Стандарт USB ввел единообразие в работе с широким спектром периферийных устройств. До его появления использовалось множество разных интерфейсов для подключения периферийных устройств (последовательный порт RS232C для модема, мыши, параллельный порт для принтера и дисководов IOMEGA ZIP, PS/2 для мыши и клавиатуры, специализированные интерфейсы для подключения сканеров и т. д.). Программирование взаимодействия с USB устройствами достаточно трудоемко. Для его упрощения была построена libusb – многоплатформенная библиотека для работы с USB устройствами из прикладной программы. Библиотека позволяет получать список подключенных к компьютеру устройств, определять их параметры, задавать режим их работы и обмениваться данными с устройствами. Существует несколько классов USB устройств, например, устройства пользовательского интерфейса, устройства внешней памяти и коммуникационные устройства. С устройствами всех этих классов можно работать, используя интерфейс библиотеки libusb, но детали протокола взаимодействия у них существенно отличаются. Функции libusb, которые используются в практической работе: 262 Работа может выполняться как на сервере, так и на своем ПК под ОС Windows или GNU Linux. В последнем случае нужно самостоятельно установить libusb. Рассмотрим последовательность действий, выполняемых простейшей программой, осуществляющей пересылку данных между компьютером и устройством пользовательского интерфейса (вариант для ОС Linux). 1. Инициализации библиотеки (вызов функции libusb_init). 2. Открытие устройства по заданным идентификатором производителя и модели ( вызов функции libusb_open_device_with_pid_vid). Первый параметр установить в NULL. 3. Отключение драйвера устройства (libusb_detach_kernel_driver). Второй параметр установить в 0. 4. Выбор текущей конфигурации (вызов функции libusb_set_configuration). Номер конфигурации — 0. 5. Открытие интерфейса (вызов функции libusb_claim_interface). Номер интерфейса — 0. 6. Одна или несколько пересылок данных (функция libusb_control_transfer). В минимальном варианте нужно использовать следующий код: 7. Закрытие интерфейса (вызов функции libusb_release_interface). 8. Закрытие дескриптора устройства (libusd_close). 9. Деинициализация библиотеки (libusb_exit). Передаваемый параметр установить в NULL. Практическая часть. 1. Реализовать программу, получающую список всех подключенных к машине USB устройств на сервере portal.sscc.ru или на собственном компьютере, на языках ANSI C или C++ с использованием libusb. Для каждого найденного устройства напечатать его класс, идентификатор производителя и идентификатор изделия. 2. Изучить состав и характеристики обнаруженных с помощью реализованной программ USB устройств. 3. Написать программу, производящую пересылку типа HID_GET_IDLE от устройства пользовательского интерфейса к компьютеру. Контрольные вопросы. 263 1. Какие задачи решает libusb? 2. На какие группы можно разбить функции libusb? 3. Какая последовательность действий производится программой, получающей состав и конфигурацию USB устройств с помощью libusb? Практическая работа №52. Установка периферийных устройств (использование МК). Цель работы: изучение организации и основных приемов работы с видеопамятью ПК в текстовом режиме. Теоретические сведения. В видеосистемах ПК для отображения информации на экране монитора используются два режима: текстовый и графический. В текстовом режиме на экран выводятся только символы, а в графическом можно строить любые сложные изображения в виде рисунков, чертежей и т. п. В текстовом режиме используется матричный метод формирования изображения. Суть метода заключается в том, что изображение на экране монитора строится из отдельных фрагментов выводимых символов (букв, цифр, математических знаков, графических элементов и др.). Каждый фрагмент представляется в виде матрицы, имеющей вид прямоугольника стандартных размеров и состоящей из определенного числа битов. Например, на рис. 2.1 показана матрица 8х8 для формирования на экране буквы “H”. Матрицы символов хранятся в знакогенераторе (памяти типа ПЗУ) видеоадаптера. Каждый бит (0 или 1) подается в схему управления лучом электронно-лучевой трубки монитора, который формирует на экране точечное изображение. Единичное значение бита указывает на то, что соответствующая точка относится к изображаемому символу. Нулевое значение бита определяет точку фона символа на экране. В текстовом режиме экран дисплея делится на отдельные знакоместа, в каждое из которых может быть помещен символ. Экран разбивается на 25 строк по 80 знакомест в каждой строке, чем обеспечивается вывод одновременно до 2000 символов. В процессе работы по заданной программе коды символьных изображений, выдаваемых на экран монитора, записываются в специальную область оперативной памяти, которая называется видеопамятью. При работе в текстовом режиме для каждого символа в памяти следует хранить его код и указание, как его изображать (цвет изображаемого символа, цвет фона, яркость изображения). Поэтому каждому символу соответствуют два байта: в первом из них записывается, что следует изобразить (код символа), во втором - как это изобразить (код атрибута символа). Для каждого символа в цветном режиме работы видеоадаптера доступно 16 основных цветов и 8 цветов фона, а также возможность мерцания символа. Формат байта, содержащего атрибут изображаемого символа, представлен на рис. 2.2. Отдельные биты атрибута образуют 4 группы: биты B0-B2 - цвет символа; бит B3 - яркость; биты B4-B6 - цвет фона; бит B7 - мерцание. Установка бита яркости в "1" делает цвет символа более светлым. С 264 помощью битов B3-B0 можно получить 16 цветов символа. Если бит мерцания B7 установлен в "1", символ начинает мерцать с частотой приблизительно 4 раза в секунду. Организация видеопамяти В текстовом режиме в видеопамяти может храниться до 4 видеостраниц или экранов с номерами от 0 до 3. Переключение видеостраниц (т.е. вывод их содержимого на экран) осуществляется средствами BIOS. Большинство программ, в то числе и DOS, работают с 0 видеостраницей. В каждой видеостранице помещается равно один экран в 25 строк по 80 символов в каждой, причем каждый символ отображается двумя байтами - байтом с кодом символа и байтом с атрибутом символа. Порядок размещения этих кодов показан на рис. 2.3. Обозначим: адрес первой ячейки - SEGM:0000H, где SEGM-двухбайтовое значение сегмента видеопамяти; С0 и А0 -соответственно код символа в строке 0 и атрибут символа в строке 0 и т.д. Для формирования текстового изображения на экране из видеопамяти последовательно считывается информация, начиная с адреса SEGM:0000H. Считывание осуществляется непрерывно и циклически. Этот процесс называется сканированием памяти. По коду символа из знакогенератора выбирается соответствующая матрица для формирования изображения символа на экране. Первый символ (символ с номером С0 в строке 0) появляется в левом верхнем углу экрана с атрибутом А0. Следующие 2 байта видеопамяти изображают следующий символ справа от14 него и т. д. Значение смещения (SM) ячейки видеопамяти для любого символа, размещаемого в произвольной позиции (NS-строка, NK-колонка) на экране определяется по формуле: 265 Для видеосистем ПК разработан ряд стандартных видеорежимов. При работе в оболочке Far manadger видеосистема по умолчанию устанавливается в текстовый цветной режим № 3 с количеством цветов равным 16 и количеством знакомест 80 х 25. Это режим работы видеоадаптера CGA, для которого видеопамять имеет емкость 16 Кбайт и начинается с адреса В800:0000. Обычно в программах, работающих напрямую с видеопамятью, регистр DS либо ES микропроцессора загружается значением сегмента видеопамяти, а остальная часть программы работает со смещениями в видеопамяти. Практическая часть. В этой практической работе необходимо написать программу, которая бы прямым доступом в видеопамять реализовала бы эффект "бегущей буквы" по экрану, например, движение буквы по верхней строке экрана. Алгоритм этой программы может быть, к примеру, следующий: 1. Инициализация ES, DI, CX. 2. Заполнение 0 страницы видеопамяти одинаковыми символами (например, кодом буквы "А" - 128 (80h) и одинаковыми атрибутами, причем такими, что бы цвет символа в них совпадал бы с цветом фона, т.е. символ был невидимым. 3. У символа на строке 0 и колонке 0 меняем атрибут на любой видимый, делаем задержку, после нее изменяем атрибут у следующего символа в строке и возвращаем старое значение атрибута предыдущему символу, т.е. гасим его. Эти действия продолжаем до 79 колонки 0-й строки. 4. Выход из программы. Таким образом, просто "зажигая" и "гася" записанные в видеопамять байты символов, мы получаем эффект бегущей по экрану буквы. Ваpианты заданий на практическую pаботу. Ваpиант 1. Движение символа по периметру экрана, начиная с позиции (0,0) слева напpаво. Ваpиант 2. Движение символа по периметру экрана, начиная с позиции (0,0) сверху вниз. Ваpиант 3. Движение символа по периметру экрана, начиная с позиции (24,79) справо налево. Ваpиант 4. Движение символа по периметру экрана, начиная с позиции (24,0) слева напpаво.16 Ваpиант 5. Движение символа по периметру прямоугольника с позициями вершин (0,40), (24,40), (24,79), (0,79). Ваpиант 6. Движение символа по периметру прямоугольника с позициями вершин (10,0), (24,0), (24,50), (10,50). Ваpиант 7. Движение символа по периметру прямоугольника с позициями вершин (0,30), (15,30), (15,79), (0,79). Ваpиант 8. Движение символа по периметру прямоугольника с позициями вершин (0,0), (0,40), (20,40), (20,0). Во время отладки программы необходимо поэкспериментировать с цветом символа и цветом фона Практическая работа №53. Интерфейсы встраиваемых микропроцессорныхсистем (Intel 8080). Цель работы: изучение элементов микропроцессорной техники и основ программирования на языке Ассемблера микропроцессора КР580ВМ80А (Intel 8080 или NTE 8080A фирмы NEC Micro). Основные теоретические положения В различных областях техники находят применение электрические сигналы разнообразной, изменяющейся в процессе работы формы. Формирование таких сигналов с помощью аналоговых и цифровых микросхем с жесткой логикой весьма сложно, так как определен- ная форма сигнала требует в этом случае соответствующего схемного решения. От этого недостатка свободны генераторы, построенные на основе микропроцессорных систем, обладающих высокой гибкостью и универсальностью. 266 Генератор на основе микропроцессорной системы должен состоять из цифровой и аналоговой части. Цифровая часть системы генерирует цифровые коды, а аналоговая – преобразует коды в сигнал требуемой формы. Получение периодического сигнала в цифровой форме сводится к вычислению его значений в нескольких точках периода Т. На рисунке показан пример формирования периодического сигнала.Период сигнала разбивается на интервалы t. Для каждого интервала вычисляется цифровой код, соответствующий мгновенному зна- чению сигнала. Для повышения быстродействия системы, полученные коды целесообразно предварительно записать в память микропроцессорной системы в виде таблицы. При этом работа микропроцессорной системы сводится к поиску соответствующих кодов в таблице и выдачи их на вход преобразователя цифрового сигнала в аналоговый. Такой генератор работает по принципу кусочно-ступенчатой аппроксимации заданного сигнала. |