Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007), страница 38
Описание файла
DJVU-файл из архива "Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007)", который расположен в категории "". Всё это находится в предмете "компьютерные методы и технологии автоматизации и управления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 38 - страница
В связи с зтим необходима коррекция вычитанием 3. Пример преобразования 2-разрядного 2-10 числа: Исходное Сдвиг вправо Коррекция Результат 10100 0100 =144 1010 0010 — 0011 0111 0010 = 72 Программа процедуры сдвига вправо и последующей коррекции для одного упакованного байта: ;сохранение младшей тетрады ;восстановление из стека При сдвиге влево !умножение на 2) все значения тетрад, которые меньше 5, дают верный результат. Для всех значений, начи- бтчб2: тот асс тот г14 рцзЬ асс апбт асс,ОхОГ срт асс,8 Ьгсз пос1 зцпг асс,з пос1: вот т13,асс рор асс апбг асс,ОхтО срт асс,Ох80 Ьгсз пос2 зцЬЬ асс,Ох30 пас2: от асс, т13 то1 г14 гет ;сдвиг байта вправо ;г13,т14 — регистры временного хранения ;сохранение в стеке ;если из старшей тетради сдвинут О, коррекция на нужна, ;иначе вычитание 3 ;если иэ старшей тетради сдвинут О, коррекция не нужна, ;иначе вычитание 830 ;объединение тетрад !восстановлен перенос О 010! 0100 = 54 + 0011 1000 0100 Сдвиг влево 1 0000 1000 = 108 грезультат) Исходное Коррекция Программа процедуры коррекции и сдвига влево для одного упакованного байта: вц162: тот т14 ; т13,г14 — регистры временного хранения рцзЬ асс ;сохранение в стеке апет асс,ОхОГ срг асс,5 ;сравнение с 5 младшей тетрады Ьгсз пас1п1 ;коррекция не нужна, если ассс5, зцЬ1 асс,-з ;иначе прибавление 3 пос1в: вот т13,асс рар асс ;восстановление из стека апбт асс,ОхГО срь асс,Ох50 ;сравнение с 5 старшей тетрады Ьгсз пас2в ;коррекция не нужна, если асс<850, зцЬ1 асс,-830 зиначе прибавление $30 пас2в: ог аса,г13 ;объединение тетрад го1 т14 ;восстановлен перенос О га1 асс ;сдвиг байта влево тет Преобразование целого десятичною числа в двоичное можно выполнить путем последовательного деления на 2 исходного значения, затем получаемых частных, используя образуемые остатки 1О или 1) в качестве разрядов двоичного числа, начиная с младшею.
Пример: 1) 71: 2 = 3511 — младший разряд двоичного числа); 2) 35:2 = 1711); 3) 17: 2 = 811); 4) 8:2 =4!0); 5) 4:2 = 2!0); 6) 2: 2 = 1(0) — старшие разряды. Результат: 1000111 ная от 5 и выше, необходимо формировать единицу переноса, так как после умножения на 2 они дают результат, равный 10 и более. Коррекцию удобно провести перед сдвигом влево путем прибавления 3 к тетраде. Это дает возможность автоматически получить перенос после сдвига влево. Пример преобразования 2-разрядного 2 — 10 числа: 237 236 Приложения 77рияожения Деление упакованного десятичного числа на 2 можно выполнить, последовательно применяя для каждого байта, начиная со старшего, процедуру сдвига и коррекции атуа(2.
Преобразование целого двоичного числа в десятичное можно выподнить, используя представление двоичного числа в виде полинома Горнера: В = (."(с(я-)2+ а)я-2)2+ " + а)))2+ е(0 Умножив исходное число на 2 (или сдвинув код числа влево на 1 разряд) можно выделить старший разряд о(я ), добавив его значение (О или 1) в десятичную ячейку и удвоив ее содержимое. Действия повторяют для всех разрядов двоичного числа. Для умножения на 2 десятичного числа используется процедура тиИ2, применяемая последователыю для каждого байта числа, начиная с младшего.
Преобразование десятичной дроби в двоичную выполняется традиционным способом: путем умножения на 2 исходной дроби и дробных частей получаемых произведений. Целые части произведений, принимающие значения О или 1, образуют ряд значений разрядов двоичной дроби, начиная со старшего, поэтому в алгоритме преобразования можно применить процедуру ти(а2 умножения на 2 десятичного числа с коррекцией.
Образуемое значение переноса при обработке старшего байта дроби подают в младший разряд ячейки двоичной дроби, одновременно сдвигая все остальные разряды влево. Преобразование двоичной дроби в десятичную можно выполнить, используя представление дроби в виде полинома Горнера: 23=2-'((,+...+2-')И (я „+2 ' „...). Сдвигая вправо двоичную дробь и подавая выталкиваемые младшие разряды в ячейку десятичной дроби слева, где также выполняется деление на 2, можно получить десятичный эквивалент. Деление и коррекция каждого байта десятичной дроби, начиная со старшего, осуществляется с помощью процедуры а)уа2.
Далее приведена тестовая программа, демонстрирующая преобразование целых чисел. Исходные для преобразования данные и результаты размещают в памяти так, что младшие разряды чисел находятся по адресу Ьгат (а ат), старшие — по адресу Ьгат + (и — 1) (с(гал) + (к — !)). Тестовая программа для преобразования упакованного целого десятичного числа длиной Х байт в двоичное длиной и байт, двоичного целого — в десятичное упакованное. ********* *** * * *** ******** *********************** ;регистр-аккумулятор ;счетчик битов )счетчик байтов ;установка указателя стека на последнюю ячейку ОЗУ ;Преобразование десятичного числа в двоичное ;Исходные данные для теста (860)=37,(861)=02 ЬбЬ: 1бт Ььт соцпТ,8*п 1оор: 1б1 ХЬ,1он(бтат+Х) ;установка 1бь ХН,Ь19Ь(бтаюьк) ; начального адреса с1с ;0=0 1бь Ьуте соцпт,х б1оор".
1б асс,-х тса11 б1уб2 вт х,асс бес Ьуте совет Ьтпе б1оор 1б1 ХЬ,1он(Ьтат+и) ;установка 1бт ХН,Ывй(Ьтею+п) ; начального адреса 1б1 Ьуте соцпт,п Ь1оор: 1б асс,-х тот асс ;сдвиг вправо вт х,асс двоичного числа бес Ьуте соцпт Ьтпе Ь1оор бес Ьтт соцпт Ьтпе 1оор )повторить для всех разрядов ;Результат (86А)=ЕО ;Обратный перевод в упакованное десятичное 1Ьб: 1бт Ььт сопят, 8*п 1б1 ХЬ,1он(бтаю+К) ;установка 1пс1цбе "8515беб.ьпс" ечц бтею = 8060 еЧц Ьтаю = 806А ецц Х = 2 ечц в=1 бег асс = т16 бег Ьтт соцпь = т17 бег Ьуте соцпт = т18 отч 8000 1бт асс,1он(ВАМЕНО) оцт ЯРЬ,асс 1ба асс,Ь19Ь(РАНЕНО) оцт ЯРН,асс ;файл определений для АТ9088515 ,"адрес десятичного числа ;адрес двоичного числа ;длина операндов для теста сдвиг вправо десятичного числа и коррекция 238 Приложения начально~о адреса и очистка ячеек десятичного числа ;установка начального адреса (С=О ;сдвиг влево двоичного числа ;установка начального адреса СПИСОК ЛИТЕРАТУРЫ ;коррекция десятичного числа и сдвиг влево ;повторить для всех разрядов Г1п: гйпр Г1п .1пс1цбе "пц1б2.азп" .Тпс1цбе "бьчб2.азп" ;вызываемые подпрограммы 1с)1 ХН,Ь19Ь(бгап+К) 1ба Ьусе соцпС,К с1г асс з 1оор: вс -х,асс бес Ьуте соцпт Ьгпе в 1оор 1оор1: 1бь ХЬ,1оч(Ьгаы) 1б1 ХН,Ь19Ь(ьгап) с1с 1ба Ьуве соцпс,п Ь1оор1: 1б асс,х го1 асс зс хе, асс бес Ьусе сопок Ьгпе Ьтоор1 1ба ХЬ,1оы(бгап) 1б1 ХН,Ь19Ь(бгап) 1ба Ьуге соцпг, К б1оор1: 1б асс,х гса11 пц1б2 зс хе,асс бес Ьуте соцпг Ьгпе б1оор1 бес Ьак сочло Ьгпе 1оор1 В мире наукоемких технологий микроконтроллеры занимают особое место.
Будучи связующим мостом между объектами окружающей среды и интеллектуальной мощью современных вычислительных средств они все более становятся инструментом, с помощью которого человек получает информацию об окружающем мире н воздействует на предметы этого мира. Современный мир микроконтроллеров чрезвычайно широк и многообразен. Прикосновение к этому миру вооружает специалистов новыми представлениями и инструментальными средствами проектирования сложных управляющих систем. Материал книг дает лишь начальное представление о сферах возможного применения микроконтроллеров. Автор надеется, что знания, полученные читателями на примере популярного семейства микроконтроллеров АУК, помогут им в дальней(пем при освоении архитектуры других микроконтроллеров, программировании конкретных задач, и желает больших творческих успехов на этом пути. 1. АУК БТК500.
Пзег Оц!бе. 2. АУК АвзешЫег Пзег Оц!бе, 3. ПагазЬееп АТ9088515, АТшеда8515, АТшеда8, РСА9544/РСА-9544А, АУК315.рбу 4. Гребнев В.В. Микроконтроллеры семейства АУК фирмы А(ше1. — Мз Радиософт, 2002. 5. Евстифеев А.В. Микроконтроллеры АУК семейств Т(пу и Меда фирмы АТМЕ1.. — Мз Издательский дом «Додэка-ХХ!», 2005.
б. Злобин В.К., Григорьев В.д. Программирование арифметических операций в микропроцессорах. — Мз Высш. шк., 1991. 7. Хартов В.Я. Проектирование и отладка программ для микроконтроллеров АЧК фирмы А(ше!. — Мз Изд-во МГТУ им. Н.Э. Баумана, 2004. 8. Сайты фирмы А(ше): Ьпр:дпэчзу.а(ше!.сош, Ь((р:двзузу.а(ше!.гп 9. Сайт фирмы 1.аЬсепгег Е!ес(гоп!св: Ьпр://в(ч(н.!аЬсеп(ег.со.ц)с Учебное издание Вячеслав Яковлевич Хартов МИКРОКОНТРОЛЛЕРЫ АУВ Практикум для начинаюпгик Редактор В.М Царев Художник С.С. Вод«пи Технический редактор Эай Кулакова Корректор О.В. Калашникова Компьютерная верстка О.В. Беляевой Оригинал-макет подготовлен в Издательстве МГТУ им.
Н.Э. Баумана Санитарно-эпидемиологическое заключение № 77.99.02,953Л.008880.09.06 от 29.09.2006 г. Подписано в печать 30.08,2007. Формат 60«90Н6. Бумага офсетная. Гарнитура «Таймом Усл. печ, л.! 5. Уч.-изд. л. !409, Тираж 500 экз. Заказ 1998 Издательство МГТУ им. Н.Э.
Баумана 105005,Москва, 2-я Бауманская, 5 Отпечатано с диапозитивов в ГУП ППП «Типография «Наука» 121099, Москва„Шубинский пер., 6 .