Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Типовые структуры схем алгоритмов обработки данныхВ процессе разработки прикладных программ для микропроцессорных систем, построенных на МП К580, и микроконтроллерных систем, построенных на МК48 и МК51, наибольшую сложность представляет разработка программ вычислительных процедур, связанных с ограничениями, накладываемыми особенностями организации МП и МК. К ним относятся: - отсутствие в системе команд МП эффективных и часто используемых операций, таких как умножение и деление (кроме МК51); - малоразрядный формат данных и, следовательно, низкая точность их обработки; - ограниченный диапазон представления данных из-за отсутствия команд обработки чисел с плавающей запятой; - отсутствие операций десятичной арифметики. Эти ограничения не являются непреодолимыми, однако способы их преодоления являются во многих случаях довольно сложными. В настоящее время разработано значительное количество типовых вычислительных процедур, некоторые из которых будут рассмотрены ниже. Прежде чем перейти к рассмотрению типовых вычислительных процедур полезно изучить типовые узлы схем алгоритмов, которые широко используются в программах обработки данных. На рис.2.1…рис.2.6 представлены типовые узлы схем алгоритмов, которые широко используются в программах обработки данных. Показанная на рис.2.1 дихотомическая (разделенная на две части) структура если - то - иначе применяется в тех случаях, когда необходимо реализовать программный переход к одной из двух вычислительных процедур в зависимости от выполнения некоторого проверяемого условия. Рис.2.1 Структура если - то - иначе Структура если – то (рис.2.2) является упрощением предыдущей и используется в тех случаях, когда необходимо реализовать или не реализовывать одну вычислительную процедуру в зависимости от проверяемого условия. Рис.2.2. Структура если – то Структура делай – пока (рис.2.3) используется для проверки условия окончания цикла. Рис.2.3. Структура делай – пока Представленная на рис.2.4 структура повторяй - до - того как аналогична предыдущей, но порядок следования операторов здесь иной: процедура выполняется до проверки условия. Рис.2.4. Структура повторяй – до – того как Структура, процесс – пока приведенная на рис.2.5 представляет собой объединение двух предыдущих структур и позволяет проводить обработку данных по двум независимым процедурам. Рис.2.5. Структура, процесс – пока На рис.2.6 показана структура делай - в - зависимости – от, с помощью которой осуществляется выбор действия при многозначных решениях и которая используется для замены цепочек структуры если - то – иначе. Рис.2.6. Структура делай - в - зависимости – от Все перечисленные структуры в различных комбинациях встречаются в алгоритмах выполнения типовых вычислительных процедур, а их грамотное использование в программах определяет эффективность вычислений. Приемы программирования Для программирования МП и МК необходимо знать состав команд, быть хорошо знакомым с назначением и расположением регистров, т.е. знать архитектуру микро-ЭВМ. Этапы составления программы должны выполняться в следующей последовательности: 1. Определение и анализ задачи; 2. Составления блок схемы алгоритма решения в общем виде и машинного алгоритма; 3. Написание программы на языке Ассемблера; 4. Трансляция программы в машинные коды; 5. Отладка программы (поиск и устранение ошибок); 6. Документирование программы. Сформулируем общие требования, предъявляемые к программам, составленным на языке Ассемблера. В общем виде любая команда на языке Ассемблера записывается следующим образом: Метка: Операция Данные; Комментарий Метка используется для обозначения адреса ячейки памяти, в которой хранится данная команда. Она может состоять из шести символов, не должна включать знаков пунктуации и пробелов, причем первым символом должна быть буква. Метка всегда определяется двоеточием и является необязательным элементом команды. Она применяется только при необходимости. Операция является обязательным элементом команды. Она представляет собой мнемоническую запись из двух – четырех букв, которые указывают на характер выполняемых действий, например: HLT – мнемоническое обозначение команды останов МП К580. Данные – часть команды, в которой может размещаться одно или два восьмиразрядных слова в зависимости от типа команды (адрес ячейки памяти, адрес порта ввода- вывода, непосредственные данные). Комментарий отделяется от команды точкой с запятой. Комментарием является запись облегчающая понимание назначения команды. Комментарий является необязательной частью команды. Тем не менее, рекомендуется снабжать команды программы комментариями, которые помогают определить роль команды в алгоритме решения задачи. Следующим шагом в разработке программы является ее трансляция в машинные коды. Обычно эта задача решается с использованием специального ПО – кросс-средств, которые разрабатываются для каждого типа микропроцессора и микроконтроллера отдельно. Однако эта задача может быть решена и вручную. При ручном методе трансляции рекомендуется выполнить следующую последовательность действий: 1. Находим КОп каждой мнемоники в таблице команд; 2. Определяем операнды (данные и адреса), задавшись начальным адресом ячейки памяти (ЯП), где будет располагаться первая команда программы; 3. Установим адреса ЯП в последовательности каждой команды и операнда. Процесс отладки программы предназначен для поиска и устранения ошибок, и проводится либо на реальной МП системе, либо на ее эмуляторе. В систему вводится программа с известными данными, и полученные результаты сравниваются с эталоном. Как правило, выполняется несколько тестов. Последним этапом программирования является документирование. На этом этапе составляется ее описание, указывающее в какой последовательности должны выполняться операции, приводятся алгоритмы выполнения программы, составляются списки, данные, адреса используемые подпрограммы и комментарии. Сложные программы требуют тщательно разработанной документации Примеры программ обработки данных в МК51 Примеры использования команд передачи данных Пример 2.1. Передать содержимое буфера УАПП в РПД по косвенному адресу из R0: MOV @R0, SBUF; передача принятого по ; последовательному каналу ; байта в РПД Пример 2.2. Загрузить в указатель данных начальный адрес 7F00H массива данных, расположенного в ВПД: MOV DPTR, #7F00H; загрузка начального ; значения указателя данных Пример 2.3. Загрузить управляющее слово в регистр управления таймером: MOV TCON, #00000101B; загрузка управляющего ; слова Пример 2.4. Сбросить все флаги пользователя (область РПД с адресами 20H – 2FH): MOV R0, #20H; задание начального адреса ; области флагов MOV R1, #0FH; счетчик (длина области ; флагов) LOOP: MOV @R0, #0; сброс одного байта INC R0; переход к следующему байту DJNZ R1, LOOP; цикл Пример 2.5. Запомнить в ВПД содержимое регистров банка 0. Начальный адрес ВПД – 5000H: MOV PSW, #01000B; выбор банка регистров 1 MOV R0, #8; счетчик MOV DPTR, #5000H; определение начального ; адреса ВПД MOV R1, #0; определение начального ; адреса РПД LOOP: MOV A, @R1; загрузка текущего байта MOVX @DPTR, A; передача из аккумулятора в ; ВПД INC R1; переход к следующему ; регистру INC DPTR; увеличение адреса DJNZ R0, LOOP; если R0>0, то повторять Пример 2.6. Передать данные через последовательный порт со скоростью 500 бит/с. Частота синхронизации составляет , а бит SMOD=0: CLR TR1; останов таймера Т/С 1; MOV TH1, #0DBH; автозагружаемое значение ; для получения; скорости ; 500 бит/с, MOV SCON, #11011100B; установка режима 3 УАПП MOV TMOD, #00100000B; установка режима 2 Т/С 1 SETB TR1; запуск таймера; LABEL: JNB T1, LABEL; ожидание окончания ; передачи CLR T1; очистка флага передачи MOV SBUF, A; выдача 9 бит данных в ; последовательный порт Флаг прерывания передатчика Т1 регистра SCON устанавливается аппаратно в конце времени выдачи 8-го бита в режиме 0 или в начале стоп бита в других режимах. Примеры использования команд арифметических операций Пример 2.7. Сложить два двоичных многобайтных числа. Оба слагаемых располагаются в РПД, начиная с младшего байта. Начальные адреса слагаемых заданы в R0 и R1. Формат слагаемых в байтах задан в R2: CLR C; сброс переноса LOOP: MOV A, @R0; загрузка в аккумулятор ; текущего байта первого ; слагаемого ADDC A, @R1; сложение байт с учетом ; переноса MOV @R0, A; размещение байта результата INC R0; увеличение указателей INC R!; DJNZ R2, LOOP; цикл, если не все байты ; просуммированы При сложении чисел без знака на переполнение укажет флаг C, а в случае сложения чисел со знаком – флаг OV. Пример 2.8. Умножить целое двоичное число произвольного формата на константу 173. Исходное число размещается в РПД, адрес младшего байта находится в регистре R0. Формат числа в байтах хранится в регистре R1: MOV A, #0; сброс аккумулятора LOOP: ADD A, @R0; загрузка множимого MOV B, #173; загрузка множителя MUL AB; умножение MOV @R0, A; запись младшего байта ; частичного произведения INC R0; увеличение адреса MOV A, B; пересылка старшего байта ; частичного произведения в ; аккумулятор XCH A, @R0; предварительное ; формирование очередного ; байта произведения DJNZ R2, LOOP; цикл, если не все биты ; исходного числа умножены ; на константу Полученное произведение размещается на месте исходного числа и занимает на один байт больше. Пример 2.9. Перевести двоичное число, содержащееся в аккумуляторе в двоично-десятичную систему. При таком преобразовании может получиться трехразрядное двоично-десятичное число. Старшая цифра будет размещена в регистре R0, а две младшие в аккумуляторе. MOV B, #100; загрузка B для вычисления ; количества сотен в числе DIV AB; определение старшей цифры MOV R0, A; пересылка в R0 старшей ; цифры XCH A, B; пересылка остатка исходного ; числа в аккумулятор MOV B, #10; загрузка B для вычисления ; количества десятков в числе DIV AB; определение числа десятков SWAP A; размещение числа десятков ; в старшей тетраде A ADD A, B; подсуммирование остатка в ; A обе младшие цифры числа Примеры использования команд логических операций Пример 2.10. Установить биты 0 – 3 порта 1: ORL P1, #00001111B; установка P1.0 – P1.3 в 1 Пример 2.11. Сбросить биты 0, 2, 6 порта P2: ANL P2, #10111010B; сброс битов 0, 2, 6 порта P2 Пример 2.12. Выбрать нулевой регистровый банк: ANL PSW, #11100111B; сброс битов RS1 и RS0 Пример 2.13. Проинвертировать биты порта 1, соответствующие единичным битам аккумулятора: XRL P2, A; исключающее ИЛИ порта P2 ; и аккумулятора Пример 2.14. Проинвертировать биты 7, 6, 5 порта 0: XRL P0, #11100000B; исключающее ИЛИ порта P0 ; и константы Пример 2.15. Проинвертировать биты 0 – 3 аккумулятора: XRL A, #0FH; исключающее ИЛИ ; аккумулятора и константы
|
||
Последнее изменение этой страницы: 2016-12-30; просмотров: 403; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.73.214 (0.005 с.) |