Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы готовые / Лабораторная работа 2 Специальный регистр состояния SREG

.docx
Скачиваний:
0
Добавлен:
21.06.2024
Размер:
17.08 Кб
Скачать

Задание 1

Разработать программу на языке Assembler, реализующую бегущий огонь в

младшем полубайте PORTC от младшего бита к старшему, при этом при

достижении границы младшего полубайта бегущий огонь движется от старшего

бита к младшему. При достижении нулевого бита процесс повторяетсяc

Программа

reset: ; инициализация портов ввода/вывода

ldi r16,0xFF

out DDRC,r16 ; установка PORTС на вывод информации

NACH:

ldi r16,0x01 ; начальное положение бегущено огня (бит 0)

main:

out PORTC,r16 ; значение выводится на PORT

lsl r16 ; r16 сдвигается влево на 1 разряд

brhc main ; если флаг H снят, то на main

/*brhs m1 ; при Z=1 выполняется переход на m1*/

m1:

lsr r16 ; r16 сдвигается вправо на 1 разряд

out PORTC,r16 ; значение выводится на PORT

brne m1 ; если флаг H снят, то на m1

/*brhs main ; при Z=1 выполняется переход на main*/

rjmp NACH

Задание 2

Разработать программу на языке Assembler, выполняющую вычитание двух

чисел C = |A – B|, при этом знак числа указывается в старшем разряде.

Программа

.include "m32def.inc"

.cseg ;выбор сегмента программного кода

.org 0 ;установка текущего адреса на ноль

reset:

ldi r16,0xFF

out DDRD,r16 ;установка PORTD на вывод информации

ldi r17,0x00

out DDRC,r17

main:

in r16,PINC ;опрос PINC с занесением результата в r16

mov r17,r16 ;копирование результата в r17

mov r18,r16

andi r17,0x0F ;обнуление всех бит, кроме 0,1.2.3

andi r18,0xF0 ;обнуление всех бит, кроме 4,5,6,7

lsr r18

lsr r18

lsr r18

lsr r18

sub r17,r18

flag:

brmi otric

out PORTD,r17

rjmp main

otric:

com r17

inc r17

ori r17,0b10000000

out PORTD, r17

rjmp main