Режимы адресации МК ATtiny2313.



 

Существует 8 различных способов адресации для памяти данных:

1) Прямая с одним регистром (inc R0, dec R0);

2) Прямая с двумя регистрами (mov R1,R2);

3) Прямая адресация I/O (in R0, addr i/o);

4) Прямая адресация (lds R0,0x60);

5) Косвенная со смещением;

6) Косвенная;

7) Косвенная с преддекрементом;

8) Косвенная с постприращением.

В регистровом файле регистры с R26 до R31 являются регистрами косвенной адресации (косвенные указатели адреса). Прямая адресация может адресовать полностью все пространство памяти. Косвенная адресация со смещением может адресовать 63 адреса используя регистры Y или Z. Когда используется режим косвенной адресации с предекрементом или постинкрементом то регистры X, Y или Z декрементируются или инкрементируются.

 

Регистр флагов МК ATtiny2313: назначение флагов, использование в программном коде.

 

SREG это регистр состояния ядра (Status Register). В этом регистре находится 8 независимых битов — флагов, которые могут быть либо 1 либо 0, в зависимости от выполненных в прошлом операций.

I - флаг разрешения прерываний. Когда установлен в 1 — прерывания разрешены.

T- пользовательский флаг. Можно использовать по своему назначению.

Кроме того, есть две команды которые позволяют в этот бит записать любой бит любого из 32 регистров общего назначения R0-R31. Это команды BLD Rn,bit и BST Rn,bit.

H - флаг полупереноса, если произошел заем бита из старшей половины байта в младшую. То есть когда из числа 0001 0111 пытаются вычести 0000 1000, то происходит заем бита из более старшего разряда, так как младшая тетрада уменьшаемого меньше младшей тетрады вычитаемого.

S - флаг знака. 1 — значит минус. При вычислении чисел со знаком он возникает если после арифметической операции возник отрицательный результат. Флаг S = V XOR N.

V — Флаг переполнения дополнительного кода. Это если мы считаем число в дополнительном коде со знаком и оно вылезло за пределы регистра.

N — флаг отрицательного значения. Если в результате арифметической операции 7 бит результата стал 1, то этот флаг тоже станет 1.

Z — флаг нуля. Если в результате какой либо операции получился ноль, то устанавливается этот флаг.

С — флаг переноса. Если в результате операции произошел выход за границы байта, то выставляется этот флаг.

Флаги, кроме автоматической установки, можно устанавливать и сбрасывать вручную. Для этого есть команды

SE* для установки и CL* для сброса. Вместо звездочки подставляется нужный флаг, например, CLI — запрет прерываний.

 

Вброс про флаги от Еленычева:
Флаг V в этом МК называется флагом переполнения по той причине, что он и отражает переполнение, но только для чисел со знаком, как общего случая (числа без знака - это частности).

Вообще, флаги V, N, S имеют смысл только, если вы работаете со знаковой арифметикой. Т.е. программист сам и только сам решает с какими числами ему работать и смотрит только на нужные ему флаги!

Для решения задачи алгоритм следующий: флаг С - есть перенос (1) или нет (0), флаг N - 7-й старший бит результата, в примере N=0, флаг S = N xor V, S = 0 xor 0 = 0. Т.е. результат положительный, что мы и увидели в десятичной системе. А вот флаг V можно ставить по следующему правилу:

1. Если числа разных знаков (старшие биты разные), то V=0 всегда!

2. Если знаки операндов одинаковые, а результат другого знака, то V=1.

3. Если знаки операндов одинаковые и результат такого же знака, то V=0.

 

Система команд МК ATtiny2313: группы команд, примеры использования.

 

Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 133 различных инструкций. Большинство команд занимает только 1 ячейку памяти (16 бит) и выполняется за 1 такт.

Всё множество команд микроконтроллеров AVR можно разбить на несколько групп:

➢ команды логических операций;

➢ команды арифметических операций и команды сдвига;

➢ команды операции с битами;

➢ команды пересылки данных;

➢ команды передачи управления;

➢ команды управления системой.

Управление периферийными устройствами осуществляется через адресное пространство данных. Для удобства существуют «сокращённые команды» IN/OUT.

1) Арифметические и логические команды.

1.1) Арифметические команды:

        ADD R0, R1

1.2) Околоарифметические команды:

        NEG R0

1.3) Логические команды:

        END R0, R1

2) Команды условных и безусловных переходов.

                    RJMP R1 / BRNE R2 / RCALL / RET

       3) Команды модуляции из бита. Битовые команды.

                   SBI / CBI / LSL

       4) Команды пересылки данных.

                   mov R0, R1

                   lds R0, 0x60

                   ld R1, x; (указатель на адрес)

                   sts 0x60, R1

                   st x,R0

       5) Команды управления.

                   NOP (организует такт задержки)

 

 

 


Дата добавления: 2018-06-01; просмотров: 776; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!