ПРОГРАММИРОВАНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ НА МК AVR

March 6, 2011 by admin Комментировать »

Задание 1. Ниже приведена тестовая программа 3.1 для проверки операций сложения и вычитания двоичных и двоично- десятичных однобайтовых чисел в среде AVR Studio 4. Для двоичного сложения;вычитания числа можно задать со знаком и без знака. Двоично-десятичные числа представлены в упакованном формате без знака.

Открыв AVR Studio 4, создать проект. Загрузить тестовую программу и, выполняя ее в пошаговом режиме, наблюдать результаты выполнения команд. Выполнить ряд примеров с разными значениями операндов. Чтобы не выполнять повторную компиляцию программы при изменении значений операндов, можно воспользоваться ручной перезагрузкой операндов в регистрах в окне НО. Для этого необходимо после команд занесения исходных значений операндов щелкнуть кнопкой мыши на соответствующем регистре в окне ;;О и занести новое значение.

Программа 3.1

;Тестовая программа 3.1 сложения и вычитания однобайтовых ;операндов

.include "8515def.inc" ;.include "m8515def.inc" .def BCDa =r30 .def BCDb =r31 .def tmpadd =r2 9 .def temp =r28 .org 0

rjmp INIT

.•Подпрограмма сложения 2-10 упакованных беззнаковых чисел ;BCDa и BCDb. Результат возвращается в BCDa, перенос – в ; BCDb

BCDadd:

Idi   tmpadd,$66

add   BCDa,BCDb

add   BCDa,tmpadd

clr BCDb brcs add_0 rjmp add_l

add_0: IdiBCDb,1 ;установить выходной перенос add_l: brhs add_2 ;если межтетрадный перенос равен О,

subi BCDa,$06           ; LSD = LSD – б

add_2: sbrs BCDb,0 ;если выходной перенос равен О, subi BCDa,$60       ; MSD = MSD – б

ret

;Подпрограмма вычитания 2-10 упакованных беззнаковых чисел ;BCDa и BCDb (BCDa – BCDb).

;Результат возвращается в BCDa,знак разности – в BCDb

BCDsub:

sub                          BCDa,BCDb

clr                             BCDb

brcc              sub_0 ;если флаг заема равен 1,

Idi                    BCDb,1 ; сохранить его

sub_0:      brhc sub_l ;если межтетрадный заем равен 1,

subi                  BCDa,$06 ; LSD = LSD – б

sub_l:   sbrs BCDb,0 ;если сохраненный флаг заема равен О,

ret                           ; выйти,

subi              BCDa,$60 ;иначе вычесть $60 ret

;Основная программа

INIT: Idi   temp,low(RAMEND)

Out         SPL,temp

Idi         temp,high(RAMEND)

out           SPH,temp Add BIN

loop: Idi   BCDa, 51

Idi         BCDb,-7 9

add BCDa,BCDb ;Результат: BCDa=$E4 Sub BIN

Idi         BCDa, 72

Idi         BCDb,28

sub           BCDa,BCDb ;Результат: BCDa=$2C Add BCD Unsigned

Idi BCDa,$51

idi BCDb,$79

rcall BCDadd           ;Результат: BCDb:BCDa=$0130

Sub BCD Unsigned

Idi BCDa,$72

Idi BCDb,$28

rcall BCDsub           ;Результат:

; BCDb=$00-пoлoжитeльный,BCDa=44

Idi BCDa,$00

Idi BCDb,$90

rcall BCDsub           ;Результат:

; BCDb=$01-oтpицaтeльный, BCDa=10

rjmp loop

Задание 2. Изучить программу 3.2, приведенную ниже для исследования арифметических операций в стартовом наборе STK500.

Программой предусмотрен ввод кода операции, 8- и 16-разрядных операндов, выполнение заданной операции и показ результатов.

Поскольку в стартовом наборе STK500 всего восемь кнопок общего назначения (SW7-SW0), отсутствие функциональных кнопок вызывает некоторые трудности. Чтобы обеспечить ввод 8-рязряд- ных чисел, поступим следующим образом: кнопки SWO- SW3 будем использовать для ввода битов тетрады, S W4 – для обмена местами младшей и старшей тетрады, SW5 – для записи байтов, SW6 и SW7 – для показа байтов результата. Таким образом, ввод чисел производится побайтно при наличии всего восьми кнопок.

Выбор и исполнение арифметической операции происходит по значению кода операции, вводимому первым, согласно табл. 3.1.

Программа 3.2

Примечание. С – перенос при сложении (заем при вычитании), Z – признак нулевого результата, N – знак результата при операциях с числами со знаком, V – переполнение разрядной сетки, S = N0V – знак результата вне зависимости от переполнения, Н – межтетрадный перенос (заем).

Таблица 3.3. Результаты

Число А

Число В

Суммам +В

Признаки: HSVNZC

А без знака >120 50>Л > 100 ^<-100 -50 <^<0 -100 <^<-50

100 >В без знака > 50 В> 100 100 <5< 128 50<5<150 -50<Д<0

 

 

Заполните табл. 3.3 операндов и наблюдаемых результатов в двоичном коде и признаков для десятичных чисел, удовлетворяющих заданным условиям. Объясните результаты машинной арифметики.

Задание 4. Выполнить операцию вычитания чисел при заданных условиях (см. табл. 3.3), выполняя ввод отрицательных чисел в дополнительном коде и соблюдая такую последовательность ввода: код операции вычитания, уменьшаемое А, вычитаемое В,

Умножение и деление целых чисел

Задание 5. Выполнить ряд примеров умножения 8-разрядных двоичных чисел. Нажатие кнопки SW6 показывает младший байт произведения, SW7 – старший байт. Изменить модуль умножения, включив в него формирование нулевого результата, если один из сомножителей равен 0.

Задание 6. Выполнить деление чисел с восстановлением остатка при условии, что делитель больше О и его значение не вызовет переполнения.

Последовательность ввода:

–    код операции деления,

–    старший байт делимого с нулевым значением в 7-м разряде,

–   младший байт,

–   делитель с нулевым значением в 7-м разряде.

Нажатие кнопки SW6 показывает частное, SW7 – остаток. Выполнить ряд примеров на деление двоичных чисел.

Задание 7. Изменить программу деления, включив в нее проверку делителя на О и на переполнение. Для обоих случаев прекратить деление, индицируя аномальный случай включением-выключением всех светодиодов. Отладить программу с помощью симулятора, предварительно закомментировав ту ее часть, которая осуществляет проверку кнопок, либо скопировав модуль деления в тестовую программу 3.1 и отключив в ней остальные подпрограммы. Проверить работу обновленной подпрограммы деления в STK500.

Задание 8. Изменить программу деления, расширив ее для вычисления дополнительных восьми двоичных разрядов частного при делении остатка. Проверить работу программы с помощью симулятора.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты