Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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 бит/с. Частота синхронизации составляет 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; просмотров: 508; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.008 с.) |