Главная » Просмотр файлов » Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007)

Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (1264222), страница 12

Файл №1264222 Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007)) 12 страницаХартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (1264222) страница 122021-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 12)

70 1011 0110 ь 0010 0101 25 1101 1011 3. Арифметическая обработка данных Таким образом, сложение беззнаковых чисел (как и модулей ~А( + !В~) можно выполнить по алгоритму, схема которого приведена на рис. 3.6: 1) двоично-десятичный код первого операнда ан 1а„з...а1ао складывается с кодом 66...66, образуя первую промежуточную СУММУ Лп — !вн — 2"'Л1ХО 2) к полученной сумме прибавляется двоично-дескгичный код второго операнда Ь„,Ьн зЬ,Ьо, образуя вторую промежуточную в в ч Суыыу Хн !Лн З..Л1ЛО,' 3) потетрадно выполняется коррекция результата. Правило коррекции формулируется следующим образом: если в результате второго сложения перенос из 1-й тетрады отсутствует (см! — — 0), то из х," вычитается шесть (или прибавллегся 10 — ! — 6]л „).

При возникновении переноса из 1-й тетрады коррекция не выполняется, а полученный результат хз является истинным. При выполнении коррекции перенос из тетрады не должен изменять содержимое следующей тетрады суммы х,"+1. Рис. 3.6. Алгоритм сложения 2-10 чисел 3.5. Сложение и вычитание двоична-десятичных чисел 71 При побайтовой обработке длинных операндов в 8-разрядном процессоре микроконтроллера для исключения ошибок коррекцию необходимо выполнять отдельно для каждой тетрады. Пример. А = 50, В = 25. Найти сумму А+ В. Двоично-десятичное представление чисел А и В: А = 0101 0000, В = = 00! О 0101.

Складывая числа 66 + А + В, получаем 0110 0110 66 + 0 101 0000 50 1011 0110 Выполняем коррекцию младшей тетрвды: 110! 1011 +1111 1010 -$06 = $ГА 1101 0101 Выполняем коррекцию старшей тетрады: 1101 0101 + 1010 0000 — $60 = $АО 0111 0101 75 Программный код процедуры 2 — 10 сложения однобайтовых операндов приведен в программе 3.1. Вычитание беззнаковых чисел А — В можно выполнить по алгоритму, схема которого представлена на рис. 3.7: 1) выполняют вычитание А — В (складывая А с дополнительным кодом В), образуя первый промежуточный результат А'. Если в результате операции образуется перенос из старшей тетрады (при этом флаг заема равен 0), результат является положительным.

При отсутствии переноса (флаг заема равен 1) результат является отрицательным и его следует перевести в дополнительный код Я"; 2) коррекция положительного результата осуществляется по правилу, сформулированному для сложения 2 — 10 чисел. Коррекция отрицательного результата выполняется иначе: если произошел перенос из 1-й тетрады (флаг межтетрадного заема равен 0) при вычитании А — В, то из 1-й тетрады В;" вычитается шесть. При выполнении коррекции перенос из тетрады не должен изменять содержимое следующей тетрады промежуточного результата. 3. Арифметическая ойрайотка банных 3.б.

Программирование арифметических операций 73 3.6. ПРОГРАММИРОВАНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ Рис. 3.7. Алгоритм вычитания 2 — 1 0 чисел Пример. А = 23, В= 62. Найти разность А — В. Двоична-десятнчное представление чисел А н В: А = 0010 0011, В = = 0110 0010.

Дополнение числа В: [В)„„= 1001 1110. Вычитая А — В = А + 1В)„, получаем л' 0010 0011 !001 1110 1100 0001 Переноса нет: результат отрицательный, флаг заема равен 1. Формируем дополнение !л'!д„п н выполняем коррекцию: 0011 1111 111! !010 -$06 = $РА 0011 100! Результат: флаг знака †, разность 39. Когда отрицательный результат требуется сохранить в дополнительном коде, шаг формирования дополнения ~В')деп опускается. Можно сразу переходить к коррекции (вычитанию шести в тех тетрадах, где не было переноса) Программный код процедуры 2 — 10 вычитания однобайтовых операндов для этого случая приведен в программе 3.1. Программа 3.1 *************************************в* к*** ь************* ;Тестовая программа 3.1 сложения и вычитания однобайтовых ;операндов .***************в***************************************** .1пс1нбе п8515бет.тпс" ;.1пс1нбе "т8515бет.ьпс" .бес ВСЭа =гЗС .бес ВСПЬ =г31 .бес страбб =г29 .бес гетр =г28 .сгд О г1п р ;Подпрограмма сложения 2-10 упакованных беззнаковых чисел ;ВСПа и ВСРЬ.

Результат возвращается в ВСПа, перенос — в ;всоь **а***********ь**********к** ********* * * ********* * ВСПабб: 1б1 абс! абб Гтрабб,866 ВСПа,ВСРЬ ВСВа,гтрабб Задание Е Ниже приведена тестовая программа 3.1 для проверки операций сложения и вычитания двоичных и двоичнодесятичных однобайтовых чисел в среде А ч'й Зшс11о 4.

Для двоичного сложения/вычитания числа можно задать со знаком и без знака. Двоично-десятичные числа представлены в упакованном формате без знака. Открыв А1гй Яиб)о 4, создать проект. Загрузить тестовую программу и, выполняя ее в пошаговом режиме, наблюдать результаты выполнения команд. Выполнить ряд примеров с разными значениями операндов. Чтобы не выполнять повторную компиляцию программы при изменении значений операндов, можно воспользоваться ручной перезагрузкой операндов в регистрах в окне Л'О. Для этого необходимо после команд занесения исходных значений операндов щелкнуть кнопкой мыши на соответствующем регистре в окне ВО и занести новое значение. 74 1с)1 1с)1 гса11 *** Яць 1с)г 1с)1 гса11 ВСоа,Б51 ВСОЬ,Я79 ВСОас)д ВСО Ппзьчпед ВСОа,972 ВСОЬ,Я28 ВСоз'Ь с1г ВСОЬ Ьгсз асЫ 0 асЫ 1 1с)1ВСОЬ, 1 Ьгпз ас)б 2 ВСОа,ЯОб зЬгз ВСЕЬ,О ;Результат: ВСОЬсВСОа=80130 гзщв ас)д 0: асЫ 1: 51хЬ1 асЫ 2: зцЬ1 1дх 1 с) 1 гса11 ВСОа,ЯОО ВСОЬ,Я90 ВСОзцЬ ВСОа,збО гзщр 1оор ВСОзцьы зцЬ ВСОа,ВСОЬ стг ВСОЬ Ьгсс зцЬ 0 ВСОЬ, 1 ;если флаг заема равен 1, 1бь зцЬ Ос зцЬР Ьгвс зцЬ 1 ВСОа,ЯО6 зЬгз ВСОЬ, 0 гес зцЬ..

ВСОа, Я60 гег 3. Арифметическая обработка д'анных ;установить выходной перенос ;если межтетрадный перенос равен О, 180 = ЬЯΠ— 6 ;если выходной перенос равен О, МЯО = МЯΠ— б ;Подпрограмма вычитания 2-10 упакованных беззнаковых чисел ;ВСОа и ВСОЬ (ВСОа — ВСОЬ). ;Результат возвращается в ВСОа,знак разности — в ВСОЬ -* **********х*х****** * * * ** ***** сохранить его ;если межтетрадный заем равен 1, ОБО = ЬЯΠ— б )если сохраненный флаг заема равен О, выйти, ;иначе вычесть 860 ***********************я***а********* ******************* ;Основная программа ****а****** *********** ********************************* твгтс 1б1 Гещр,то 01АМВНО) Оцс Ярь,сещр 1с)1 Сещр,вьчп)ВАМВНО) оцс ЯРН,Гещр С *** Асщ 81Н 1оорс 161 ВСОа,51 1с)1 ВСОЬ,-79 асЫ ВСОа,ВСОЬ ;Результат: ВСОа=ЯЕ4 ;*.* ЯцЬ Вти 1б ВСОа,72 1с)1 ВСОЬ,28 зцЬ ВСОа,ВСОЬ ;Результат: ВСОа=з2С :*** АсЫ ВСО Опеьчпес) 3.б.

Программирование арифметических операций 75 ;Результат: ВСОЬ=ЯОО-положительный,ВСОа=44 ;Результат: ВСОЬ=Я01-отрицательный, ВСОа=10 Задание 2. Изучить программу 3.2, приведенную ниже для исследования арифметических операций в стартовом наборе 8ТК500. Программой предусмотрен ввод кода операции, 8- и 1б-разрядных операндов, выполнение заданной операции и показ результатов. Поскольку в стартовом наборе 8ТК500 всего восемь кнопок общего назначения (8%7-8%0), отсутствие функциональных кнопок вызывает некоторые трудности. Чтобы обеспечить ввод 8-рязрядных чисел, поступим следую- им образом: кнопки 8%0— 8%3 будем использовать для ввода битов тесрады, 8%4 — для обмена мест амн младшей и старшей тетрады„8%5 — для записи байтов, 8%6 и 8%7— для показа байтов результата.

Таким образом, ввод чисел производится побайтно при наличии всего восьми кнопок. Выбор и исполнение арифметической операции происходит по значению кода операции, Вводимому первым, согласно табл. 3.1. Программа 3.2 ° * *********** *я** ***я * *** я***** ;Программа 3.2 — эмуляция арифметического устройства ;БНΠ— установка/сброс 0-го бита ;ЯИ1 — установка/сброс 1-го бита ;БИ2 — установка/сброс 2-го бита 3. Арифметическая обработка данных 76 3.б.

Программирование арифметических операций 77 ;БХЗ вЂ” установка/сброс 3-го бита ;ях4 — обмен местами младшей и старшей тетрад ;БХ5 — запись кода операции, двух (а при делении трех) байтов операнлов и выполнение операции при третьем нажатии кнопки (или 4-м при делении) ;БХб — показ байта суммы или разности, или младшей части произведения, или частного при делении ;ЯХ7 — показ байта признаков результата сложения или вычитания, или старшего байта произведения, или остатка при делении ;Соединения шлейфамис порт РВ-РЕР, порт РР-ЯХ ***************************я*******я*я************ч****** ;проверка кнопки ЯХб(ЯХ7) ;вывод на светодиоды задержка .

1пс1цбе ч 8515бе1. Тпс" ;.1пс1пбе "п8515беб.фпс" .беб Гепр = г1б .беб ян соб = г17 .беб орегапб = г18 .беб соцпг = г22 .беб соцпс Ьхс г23 ;установка указателя стека ч на последнюю ячейку ОБУ ;настройка цорта РВ на вывод снастройка порта РР на ввод ;очистка кода кнопки кнопка обмена ;очистка операнда 1ЯНЕО.Т=1 ;кнопка записи операндов ;кнопки просмотра результатов ссоппс=Ох11 — для обхода подпрограммы орех гопрос кнопок 0,1,2,3 РООРс Сеяс ян 0 Сеяс ян 1 геяг ян 2 сеяг ян 3 гса11 Геяс ЯХАР гса11 Геяс ХН ср1 соппг,О гЗпр сргфс Ь1б ян соб, 60 еог орегапб, ян соб соп орегапс) оцГ РОНТВ,орегапб соп орегапс( с1г ян соб гса11 РЕРАТ Ьгпе ЯХ ЯНОХ .беб сор = г24 .бег яепагог = г25 .бе1 ор А = г1 .бег ор В = г2 .бег ор АН = гЗ .бег пц1 1 г4 .беб пц1 Ь = г5 .бег гея = гб .беб япон1 - г19 .беб янон2 = г20 с***Выводы порта РР*** .ес(ц ЯХ БХАР = 4 .еао ЯХ ХН = 5 .ес(ц ЯХб = б .еЧп ЯХ7 = 7 .пасто геяг ян яЬТс РТНР, 80 чфайл определений для АТ90Я8515 ;файл определений лля АТпе9а8515 ;временный регистр ;код состояния замкнутой кнопки ;операнд ;счетчик ввода ;счетчик циклов умножения (деления) ;код операции чоперанд А ;операнд В ;старший байт делимого ;младший байт произведения ;старший байт произведения >частное ;1-й выводимый байт результата ;2-й выводимый байт ; проверка кнопки ЯХх (х=О, 1, 2, 3) ) и установка бита замкнутой кнопки ;переключение бита ;инвертирование для вывода на светодиоды ;инвертирование ;очистка кода кнопки ;задержка натг.

"яЬТя Р1НР, 60, г3пр на11 с(ц1г: пор .епбпасго Геяс ян .пасто Геяс звон яЬРс Р1МР, 60 гЗпр с(ц1Г соп 81 оцс РОНТВ, 81 соп 81 гса11 РЕРАУ натгс ябфя Р1НР, 80 г3'пр на11 с(п1Г: с1ор .епбпасго Геяг япон .ог9 ЯООО гОпр сп1с ;***Инициализация*** 1НТ Гепр,1он(РАНЕНО) опс БРР,Гепр Ь11 Сепр,Л19Ь(РАНЕНО опс БРН,Гепр яег сепр оцс РРНВ,Гепр опс РОНТВ,Сепр с1г гепр оцГ РРНР,Гепр яег Гепр оцс РОНТР,Гепр с1г ян соб с1г орегапб яег 1б1 яепагог,1 яег соппс сопрос кнопки обмена тетрадами ;опрос кнопки записи ;условие перехода к обработке операндов 3. Арифиетическая обработка данных ;вызов арифметической операции тса11 орет 101 зета ог, 1 вег саопс ЯХ ЯНОИ: Гевт впон гевт впон тЗшр ЬООР Яхб,зьон1 ЯИ?,вьон2 )Вызываемые подпрограммы ;******модуль арифметических операций ОРЕНс ср1 сор,1 ;анализ КОП Ьтпе Ь2 ;******Сложение или вычитание 8-разрядных операндов ас(с) ор А, ор В ЬО:шоч впон1,ор А гп вдон2,ЯНЕЯ апдг впои2,0хЬТ тес Ь2ссрь сор,2 Ьтпе ЬЗ впЬ ор А,ар В тЗшр ЬО ЬЗс срг сор,З Ьгс1е Ь4 ;******Модуль умножения с1т шц1 1 с1г шп1 Ь 161 соппт Ь11,8 Ь1:вЬтс ор В,О ас(с) шц1 Ь,ор А Ь4сср1 сор,4 Ьгпе Ь5 )******Модуль деления 16-разрядного числа на 8-разрядное ь2сгот пю1 Ь таг пп11 1 1вг ор В с1с ЬЗ: с)ес соцпт Ььт Ьгпе ь1 шоч впон1,шп1 1 шоч впон2,шц1 Л тег выводимые значения — сумма и признаки из регистра ВНЕС обнуление флага Т 8-разрядных операндов )очистка младшего байта произведения ;очистка старшего байта произведения ;счетчик циклов ;проверка младшего разряда множителя ;прибавление множимого А, если 80=1 ;сдвиг вправо двух байтов произведения ;сдвиг множителя вправо ;очистка флага С ;уменьшение счетчика циклов ;если не О, продолжаем умножение )выводимые значения — младший и старший байты произведения 3.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6374
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее