Бродин В.Б., Калинин А.Б. Схемы на микроконтроллерах и БИС программируемой логики, 2002
.pdfГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR |
169 |
Мнемо |
Операн |
Описание |
ника |
ды |
Загрузить косвенно |
LD |
Rd,X |
|
LD |
0<d<31 |
Загрузить косвенно с |
Rd,X+ |
||
|
0<d<31 |
постинкрементом |
LD |
Rd, X |
Загрузить косвенно с |
|
0<d<31 |
преддекрементом |
LD |
Rd,Y |
Загрузить косвенно |
|
0<d<31 |
|
LD |
Rd,Y+ |
Загрузить косвенно с |
|
0<d<31 |
постинкрементом |
LD |
Rd,-Y |
Загрузить косвенно с |
|
0<d<31 |
преддекрементом |
LDD |
Rd,Y+q |
Загрузить косвенно со |
|
0<d<31 |
смещением |
|
0<q<63 |
|
LD |
Rd,Z |
Загрузить косвенно |
|
0<d<31 |
|
LD |
Rd,Z+ |
Загрузить косвенно с |
|
0<d<31 |
постинкрементом |
LD |
Rd,-Z |
Загрузить косвенно с |
|
0<d<31 |
преддекрементом |
LDD |
Rd,Z+q |
Загрузить косвенно со |
|
0<d<31 |
смещением |
|
0<q<31 |
|
STS |
k,Rr |
Записать непосредственно |
|
0<r<31 |
в ОЗУ |
|
0<k<65535 |
|
ST |
X,Rr |
Записать косвенно |
|
0<r<31 |
|
ST |
X+,Rr |
Записать косвенно с |
|
0:£r<31 |
постинкрементом |
ST |
-X,Rr |
Записать косвенно с |
|
0<r<31 |
преддекрементом |
ST |
Y,Rr |
Записать косвенно |
|
0<r<31 |
|
ST |
Y+,Rr |
Записать косвенно с |
|
0<r<31 |
постинкрементом |
ST |
-Y,Rr |
Записать косвенно с |
|
0<r<31 |
преддекрементом |
STD |
Y+q,Rr |
Записать косвенно со |
|
0<r<31 |
смещением |
|
0<q<63 |
|
ST |
Z,Rr |
Записать косвенно |
|
0<r<31 |
|
ST |
Z+,Rr |
Записать косвенно с |
|
0<r<31 |
постинкрементом |
ST |
-Z,Rr |
Записать косвенно с |
|
0<r<31 |
преддекрементом |
Операция
Rd 4 - (X)
Rd 4 - (X),
Х< - Х +1
Х« - Х - 1, Rd <- (X)
Rd <- (Y),
Rd (Y),
Y « - Y +1
Y 4 - Y - 1,
Rd 4 - (Y)
Rd 4- (Y+q)
Rd 4 - (Z)
Rd 4 - (Z),
Z 4 -Z + 1
Z 4 - Z - 1,
Rd 4- (Z)
Rd 4- (Z+q)
(k) 4- Rr
(X) 4- Rr
(X) 4- Rr, X 4 - X + 1 X 4 - X - 1,
(X)4- Rr
(Y)4- Rr
(Y) 4- Rr, Y 4 - Y + 1 Y 4 - Y - 1,
(Y)4- Rr (Y+q) 4- Rr
(Z)4- Rr
(Z) 4- Rr,
Z 4 - Z + 1
Z 4- Z - 1,
(Z) 4- Rr
Флаги Кол-во циклов
Нет 2
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
3 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
Нет |
2 |
170
Мнемо |
Операн |
ника |
ды |
STD |
Z+q,Rr |
|
0<r<31 |
|
0<q<63 |
LPM |
|
IN |
Rd,P |
|
0<d<31 |
|
0<P<63 |
OUT |
P.Rr |
|
0<r<31 |
|
0<P<63 |
PUSH |
Rr |
|
0^r<31 |
POP |
Rd |
|
0<d<31 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ
Описание |
Операция |
Флаги |
Кол-во |
|
|
Нет |
циклов |
Записать косвенно со |
(Z + q )<- Rr |
2 |
|
смещением |
|
|
|
Загрузить байт из памяти |
RO <- (Z) |
Нет |
3 |
программ |
|
Нет |
1 |
Загрузить данные из порта |
R d < -P |
||
I/O в регистр |
|
|
|
Записать данные из |
P <- Rr |
Нет |
1 |
регистра в порт I/O |
|
|
|
Сохранить регистр в стеке |
STACK <- Rr |
Нет |
2 |
Выгрузить регистр из стека |
Rd <- STACK |
Нет |
2 |
Команды ELPM и LPM выполняют загрузку памяти программ. Команда MOV копирует содержимое одного регистра общего назна
чения в другой.
Команда LDI загружает регистр общего назначения непосредственно константой (только R16 - R32), а команды LD выполняют загрузку ре гистра из ячейки ОЗУ при косвенной адресации, используя в качестве источника адреса регистры X, Y, Z, а также варианты с постинкрементом и преддекрементом источника. Команда LDD выполняет эту же операцию при помощи косвенной адресации со смещением. Команда LDS загружает в регистр общего назначения содержимое прямо адресуемой ячейки памя ти данных.
Команда ST выполняют обратную операцию относительно LD - за носит в косвенно адресуемую ячейку памяти данных содержимое регистра общего назначения, используя также варианты с постинкрементом и преддекрементом адреса. Команда STD выполняет эту же операцию при помощи косвенной адресации со смещением, а команда STS прямо адре сует ячейку ОЗУ.
Команда IN заносит содержимое регистра ввода-вывода в регистр общего назначения, а команда OUT выполняет обратную операцию.
Команда PUSH сохраняет содержимое регистра в стеке, а команда POP выполняет обратную операцию. При выполнении этих команд кроме программного счетчика изменяется и значение указателя стека SP.
Обратите внимание, что команды пересылки данных, как и рассмат риваемые далее команды переходов значения флагов регистра SREG не изменяют.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR |
171 |
Команды передачи управления (переходов) приведены ниже.
Команды переходов
М не Операн моника ды
RJMP k -2K<k<2K
LJMP |
|
JMP |
k |
|
0Sk<4M |
RCALL |
К |
|
-2K<k<2K |
ICALL |
|
CALL |
К |
|
<Kk£64K |
RET |
|
RETI |
|
CPSE |
Rd.Rr |
|
(Kd<31, |
|
0<r<31 |
SBRC |
Rr,b |
|
0<r<31 |
|
0<b^7 |
SBRS |
Rr,b |
|
(Kr<31 |
|
0<b<7 |
SBIC |
P,b |
|
0<P£31 |
|
0<b<7 |
SBIS |
P,b |
|
(Kr<31 |
|
CKb:£7 |
BRBS |
s,k |
|
0<s<7 |
|
-64<k<+63 |
BRBC |
s,k |
|
0<s^7 |
|
-64<k^+63 |
BREQ |
k |
|
-64^k<+63 |
BRNE |
k |
|
-64<k<+63 |
Описание
Перейти относительно
Перейти косвенно Перейти
Вызвать подпрограмму относительно Вызвать подпрограмму косвенно
Выполнить длинный вызов подпрограммы Вернуться из подпрограммы Вернуться из прерывания
Сравнить и пропустить, если равно
Пропустить, если бит в регистре очищен
Пропустить, если бит в регистре установлен
Пропустить, если бит в регистре I/O очищен
Пропустить, если бит в регистре I/O установлен
Перейти, если бит в регистре статуса установлен
Перейти, если бит в регистре статуса очищен
Перейти, если равно
Перейти, если не равно
BRCS |
k |
Перейти, если флаг |
|
-64^k<+63 |
переноса установлен |
BRCC |
k |
Перейти, если флаг |
|
-64^k<+63 |
переноса очищен |
BRSH |
k |
Перейти, если равно или |
|
-64<k<+63 |
больше (без знака) |
Операция
PC 4- PC + k + 1
P C 4 -Z
PC 4 - k
PC 4- PC + k + 1
PC 4- Z
PC 4 - k
PC 4 - STACK
PC 4 - STACK if Rd=Rr then
PC 4- PC + 2 (or 3)
if Rr(b)=0 then
PC 4- PC + 2 (or 3)
if Rr(b)=1 then
PC 4 - PC + 2 (or 3)
if l/OP(b)=0 then PC 4- PC + 2 (or 3)
if l/OP(b)=1 then PC 4 - PC + 2 (or 3)
if SREG(s)=1 then PC 4 - PC + k + 1
if SREG(s)=0 then PC 4 - PC + k + 1
if Rd=Rr(Z=1) then PC 4- PC + k + 1 if Rd*Rr(Z=0) then PC 4- PC + k + 1 if C=1 then
PC 4 - PC + k + 1 if C=0then
PC 4 - PC + k + 1 if Rd>Rr (C=0) then
PC 4- PC + k + 1
Ф лаги Кол-во
Нет |
циклов |
2 |
|
Нет |
2 |
Нет |
3 |
Нет |
3 |
Нет |
3 |
Нет |
4 |
Нет |
4 |
1 |
4 |
Нет |
1/2/3 |
Нет |
1/2/3 |
Нет |
1/2/3 |
Нет |
1/2/3 |
Нет |
1/2/3 |
Нет |
1/2 |
Нет |
1/2 |
Нет |
1/2 |
Нет |
1/2 |
Нет |
1/2 |
Нет |
1/2 |
Нет |
1/2 |
172 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
Мне |
Операн |
Описание |
моника |
ды |
Перейти, если меньше |
BRLO |
к |
|
|
-64<к<+63 |
(без знака) |
BRMI |
к |
Перейти, если минус |
|
-64<к<+63 |
|
BRPL |
к |
Перейти, если плюс |
|
-64<к<+63 |
|
BRGE |
к |
Перейти, если больше или |
|
-64<к<+63 |
равно (с учетом знака) |
BRLT |
к |
Перейти, если меньше чем |
|
-64<к<+63 |
(со знаком) |
BRHS |
к |
Перейти, если флаг |
|
-64^к<+63 |
полупереноса установлен |
BRHC |
к |
Перейти, если флаг |
|
-64<к<+63 |
полупереноса очищен |
BRTS |
к |
Перейти, если флаг Т |
|
-64<к<+63 установлен |
|
BRTC |
к |
Перейти, если флаг Т |
|
-64<к<+63 очищен |
|
BRVS |
к |
Перейти, если флаг |
|
-64<к<+63 |
переполнения установлен |
BRVC |
к |
Перейти, если флаг |
|
-64<к<+63 переполнения очищен |
|
BRIE |
к |
Перейти, если глобальное |
|
-64^к<+63 |
прерывание разрешено |
BRID |
к |
Перейти, если глобальное |
|
-64<к<+63 |
прерывание запрещено |
Операция |
Флаги |
Кол-во |
|
|
циклов |
if Rd<Rr (С=1) |
Нет |
1/2 |
then |
|
|
PC 4- PC + k + 1 |
|
1/2 |
if N=1 then |
Нет |
|
PC 4 - PC + k + 1 |
|
|
if N=0then |
Нет |
1/2 |
PC 4- PC + k + 1 |
|
|
if Rd>Rr(N®V=0) then
PC 4 - PC + k + 1 if Rd<Rr(N®V=1) then
PC 4 - PC + k + 1 if H=1 then
PC 4 - PC + k + 1 if H=0 then
PC 4 - PC + k + 1 . if T=1 then
PC 4 - PC + k + 1 if T=0then
PC 4 - PC + k + 1 if V=1 then
PC 4 - PC + k + 1 if V=0then
PC 4 - PC + k + 1 if 1=1 then
PC 4 - PC + k + 1 if l=0 then
PC 4 - PC + k + 1
Нет 1/2
Нет 1/2
Нет 1/2
Нет 1/2
Нет 1/2
Нет 1/2
Нет 1/2
Нет 1/2
Нет 1/2
Нет 1/2
Арифметические и логические команды, команды сдвигов и опера ций с битами. Для обработки данных микроконтроллер ATmegal03 ис пользует группу команд, реализующих арифметические и логические операции, а также сдвиги. Важную и достаточно большую группу у каж дого микроконтроллера образуют команды, выполняющие операции над отдельными битами.
Арифметические операции являются операциями над 8-разрядными целыми числами. Для выполнения целочисленных операций над длинны ми словами служат команды сложения и вычитания с учетом флага пере носа. Для выполнения операций над числами с плавающей точкой, реа лизации тригонометрических функций и т.д. служат библиотеки периода выполнения, входящие в состав интегрированной системы программиро вания «ТурбоАссемблер-AVR».
Арифметические и логические команды, а также команды сдвигов и операций с битами приведены в следующих двух таблицах.
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR |
173 |
|
А риф м етические и логические команды |
||
Мне |
Операнды |
Описание |
Операция |
моника |
|
|
|
ADD |
Rd.Rr |
|
0<d<31 |
|
0<r<31 |
ADC |
Rd.Rr |
|
0<d<31 |
ADIW |
0<r<31 |
Rd,K |
|
|
de{24,26,28,30} |
|
0<K<63 |
SUB |
Rd.Rr |
|
0<d<31 |
|
0<r<31 |
SUBI |
Rd, К |
|
16<d<31 |
|
0<K<255 |
SBC |
Rd, Rr |
|
0<d<31 |
|
0<r<31 |
SBCI |
Rd, К |
|
16<d<31 |
|
0<K<255 |
SBIW |
Rd, К |
|
de{24,26,28,30} |
|
0<K<63 |
AND |
Rd, Rr |
|
0<d<31 |
|
0<r<31 |
ANDI |
Rd, К |
|
16<d<31 |
|
0£K<255 |
OR |
Rd, Rr |
|
0<d<31 |
|
0<r£31 |
ORI |
Rd, К |
|
16<d<31 |
|
0<K<255 |
EOR |
Rd, Rr |
|
0<d<31 |
|
0<r^31 |
COM |
Rd |
NEG |
0^d<31 |
Rd |
|
SBR |
0<d<31 |
Rd, К |
|
|
16<d<31 |
|
0<K<255 |
Сложить без переноса
Сложить с переносом
Сложить непосредст венное значение со словом
Вычесть без заема
Вычесть непосредст венное значение
Вычесть с заемом
Вычесть непосредст венное значение с заемом
Вычесть непосредст венное значение из слова
Выполнить логическое
AND
Логическое AND
Логическое OR
Логическое OR с непосредственным значением
Исключающее OR
Дополнение до единицы Дополнение до двух
Установить биты в регистре
Rd 4- Rd + Rr
Rd 4 - Rd + Rr + С
Rdh:Rdl 4 - Rdh:Rdl
+ К
Rd 4- Rd - Rr
Rd 4 - Rd - К
Rd 4 - Rd - Rr - С
Rd 4 - Rd - К - С
Rdh:Rdl 4 - Rdh:Rdl
- К
Rd 4 - Rd • Rr
Rd 4 - Rd • К
Rd 4 - Rd v Rr
Rd 4 - Rd v К
Rd 4 - Rd Ф Rr
Rd 4 - SFF - Rd
Rd 4 - S00 - Rd
Rd 4 - Rd v К
Флаги |
K -b o |
Z, С, |
циклов |
1 |
|
N, V, H |
|
Z, C, |
1 |
N, V, H |
|
Z, C, |
2 |
N, V |
|
Z, C, |
1 |
N, V, H |
|
Z, C, |
1 |
N, V, H |
|
Z, C, |
1 |
N, V, H |
|
z, c, |
1 |
N, V, H |
|
z, c, |
2 |
N, V |
|
Z, N, V |
1 |
Z, N, V |
1 |
Z, N, V |
1 |
Z, N, V |
1 |
Z, N, V |
1 |
z, C, |
1 |
N, V |
|
z, C, |
1 |
N, V, H |
1 |
Z, N, V |
174 |
|
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
|||
|
|
|
|
|
|
Мне |
Операнды |
Описание |
Операция |
Флаги |
К-во |
моника |
|
|
|
Z, N, V |
циклов |
CBR |
Rd, К |
Очистить биты в |
Rd 4- Rd • (SFF - К) |
1 |
|
|
1 6 ^ 3 1 |
регистре |
|
|
|
|
0<K<255 |
|
|
Z, N, V |
1 |
INC |
Rd |
Инкрементировать |
Rd 4 - Rd + 1 |
||
|
0<d<31 |
|
|
Z, N, V |
1 |
DEC |
Rd |
Декрементировать |
Rd 4 - Rd - 1 |
||
|
0<d<31 |
Проверить на ноль |
|
Z, N, V |
1 |
TST |
Rd |
Rd 4 - Rd • Rd |
|||
|
0<d<31 |
или минус |
|
Z, N, V |
1 |
CLR |
Rd |
Очистить регистр |
Rd 4 - Rd Ф Rd |
||
|
0<d<31 |
|
|
нет |
1 |
SER |
Rd |
Установить все биты |
Rd 4 - SFF |
||
|
16^d<31 |
регистра |
|
z, C, |
1 |
CP |
Rd, Rr |
Сравнить |
Rd - Rr |
||
|
0<d<31 |
|
|
N, V, H |
|
|
0<r<31 |
|
|
z, C, |
|
CPC |
Rd, Rr |
Сравнить с учетом |
Rd - R r - С |
1 |
|
|
0<d<31 |
переноса |
|
N, V, H |
|
|
0<r<31 |
|
|
z, C, |
|
CPI |
Rd, К |
Сравнить с константой |
Rd - К |
1 |
|
|
16^d<31 |
|
|
N, V, H |
|
|
0<K<255 |
|
|
|
|
|
|
Команды сдвигов и операций с битами |
|
|
|
Мне |
Операнды |
Описание |
Операция |
Флаги |
Кол-во |
моника |
|
|
|
|
циклов |
LSL |
Rd |
Логически сдвинуть |
Rd(n+1) 4 - Rd(n), |
Z,C,N,V,H |
1 |
LSR |
0<d<31 |
влево |
Rd(0) 4-0, С 4 - Rd(7) |
|
|
Rd |
Логически сдвинуть |
Rd(n) 4- Rd(n+1), |
Z.C.N.V |
1 |
|
ROL |
0<d<31 |
вправо |
Rd(7) 4-0, С 4 - Rd(0) |
|
|
Rd |
Сдвинуть влево через |
Rd(0) 4—C, |
Z,C,N,V,H |
1 |
|
|
0<d<31 |
перенос |
Rd(n+1) 4 - Rd(n), |
|
|
ROR |
Rd |
Сдвинуть вправо |
С 4 - Rd(7) |
|
|
Rd(7) 4—C, |
Z,C,N,V |
1 |
|||
|
0<d<31 |
через перенос |
Rd(n) 4 - Rd(n+1), |
|
|
ASR |
Rd |
Арифметически |
С 4 - Rd(0) |
|
|
Rd(n) 4 - Rd(n+1), |
Z.C.N.V |
1 |
|||
SWAP |
(Kd<31 |
сдвинуть вправо |
С 4- Rd(0), n=0...6 |
|
|
Rd |
Поменять нибблы |
Rd(3...0) 4» Rd(7...4 |
Нет |
1 |
|
BSET |
0<d<31 |
местами |
) |
|
|
s |
Установить флаг |
SREG(s)4- 1 |
SREG(s) |
1 |
|
BCLR |
0<s<7 |
|
|
|
|
s |
Очистить флаг |
SREG(s)4- 0 |
SREG(s) |
1 |
|
SBI |
0<s<7 |
|
|
|
|
P,b |
Установить бит в |
l/0(P,b)4- 1 |
Нет |
2 |
|
|
0<P<31 |
регистре I/O |
|
|
|
|
0<b<7 |
|
|
|
|
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR
Мне* |
Операнды |
Описание |
моника |
|
|
CBI |
P,b |
Очистить бит в |
|
0<P<31 |
регистре I/O |
BST |
0<b<7 |
Переписать бит из |
Rd,b |
||
|
0<d<31 |
регистра во флаг Т |
BLD |
0<b<7 |
Загрузить Т флаг в бит |
Rd,b |
||
|
0<d<31 |
регистра |
|
0£b£7 |
|
SEC |
|
Установить флаг |
|
|
переноса |
CLC |
|
Очистить флаг |
|
|
переноса |
SEN |
|
Установить флаг |
|
|
отрицательного |
CLN |
|
значения |
|
Очистить флаг |
|
|
|
отрицательного |
SEZ |
|
значения |
|
Установить флаг |
|
CLZ |
|
нулевого значения |
|
Очистить флаг |
|
SEI |
|
нулевого значения |
|
Установить флаг |
|
|
|
глобального |
CLI |
|
прерывания |
|
Очистить флаг гло |
|
SES |
|
бального прерывания |
|
Установить флаг знака |
|
CLS |
|
Очистить флаг знака |
SEV |
|
Установить флаг |
CLV |
|
переполнения |
|
Очистить флаг |
|
SET |
|
переполнения |
|
Установить флаг Т |
|
CLT |
|
Очистить флаг Т |
SEH |
|
Установить флаг |
CLH |
|
полупереноса |
|
Очистить флаг |
|
|
|
полупереноса |
NOP |
|
Выполнить холостую |
SLEEP |
|
команду |
|
Установить режим |
|
|
|
SLEEP |
WDR |
|
Сбросить сторожевой |
|
|
таймер |
Операция
l/0(P ,b)4- 0
Т«- Rd(b)
Rd(b) 4 - Т
С<- 1
С<- 0
N4- 1
N 4 -0
Z4— 1
Z<- 0
\< - 1
\<- 0
S<- 1
S 4 -0
V4- 1
V 4 -0
Т4- 1
Т4—0
Н4— 1
Н4—0
См. описание команды в Приложении 2 См. описание команды в Приложении 2
175
Флаги Кол-во циклов
Нет 2
Т1
Нет 1
С1
С1
N 1
N |
1 |
Z |
1 |
Z |
1 |
I |
1 |
I |
1 |
S |
1 |
S |
1 |
V |
1 |
V1
т1
т1
н1
н1
Нет 1
Нет 1
Нет 1
176 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
|
4 .4 . Параллельные порты
У микроконтроллера ATmegal03 имеется 6 параллельных портов ввода/вывода.
4.4.1. Порт А
Порт А является 8-разрядным двунаправленным портом вво да/вывода, оснащен встроенными нагрузочными резисторами.
Взаимодействие с портом А осуществляется через три расположен ных в пространстве ввода/вывода (памяти данных) регистра: регистр порта данных PORTA, регистр направления данных DDRA и регистр входных данных PINA. Регистр входных данных обеспечивает только возможность чтения, регистры порта данных и направления данных обес печивают возможность и чтения и записи.
Все выводы порта А оснащены индивидуально подключаемыми встроенными нагрузочными резисторами. Выходные буферы порта А обеспечивают ток до 20 мА, что достаточно для прямого управления све тодиодными индикаторами. Если выводы РАО - РА7 используются в ка честве входов и внешним сигналом удерживаются на низком уровне, то вытекающий ток обеспечивается подключением внутренних нагрузочных резисторов.
Выводы порта А могут выполнять альтернативную функцию. При взаимодействии с внешней памятью данных они могут формировать младшие разряды мультиплексированной шины адреса/данных. Альтер нативная функция включается установкой бита SRE регистра MCUCR, при этом установки регистра направления данных игнорируются.
Регистр данных порта А - PORTA
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
$1В ($ЗВ ) PORTA7 PORTA6 |
PORTA5 |
PORTA4 |
PORTA3 PORTA2 PORTA1 PORTAO PORTA |
|||||
Исх.код |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
7 |
Регистр направления |
данных порта А - DDRA |
|
|||||
|
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
$1А ($ЗА) DDA7 |
DDA6 |
DDA5 |
DDA4 |
DDA3 |
DDA2 |
DDA1 |
DDA0 |
DDRA |
|
Исх.код |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
7 |
Регистр входных данных порта А - PINА |
|
|
|||||
|
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
$19 ($39) PINA7 |
PINA6 |
PINA5 |
PINA4 |
PINA3 |
PINA2 |
PINA1 |
PINA0 |
PINA |
|
Исх.код |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
ГЛАВА 4. МИКРОКОНТРОЛЛЕРЫ ФИРМЫ ATMEL С АРХИТЕКТУРОЙ AVR |
177 |
PINA не является регистром, при обращении по этому адресу чита ются значения на выводах порта. При чтении регистра PORTA читается состояние защелок данных порта А.
Все восемь линий порта А при его использовании в качестве цифро вого устройства ввода/вывода работают одинаково. Соответствующий бит DDAn определяет направление вывода, а бит PORTAn = 1 при рабо те вывода в качестве входа подключает нагрузочный резистор. После сброса выводы портов находятся в третьем состоянии.
Воздействие битов DDAn на работу выводов порта А
DDAn |
PORTAn |
I/O |
Нагрузочный |
Описание |
0 |
|
|
резистор |
Третье состояние |
0 |
Вход |
Не подключен |
||
0 |
1 |
Вход |
Подключен |
При входном низком уровне РАп |
|
|
|
|
обеспечивает вытекающий ток |
1 |
0 |
Выход |
Не подключен |
Низкий уровень, двухтактный выход |
1 |
1 |
Выход |
Не подключен |
Высокий уровень, двухтактный выход |
4.4.2. Порт В
Порт В является 8-разрядным двунаправленным портом вво да/вывода, оснащен встроенными нагрузочными резисторами.
Взаимодействие с портом В осуществляется через три расположен ных в пространстве ввода/вывода (памяти данных) регистра: регистр порта данных PORTB, регистр направления данных DDRB и регистр входных данных PINB. Регистр входных данных обеспечивает только возможность чтения, регистры порта данных и направления данных обес печивают возможность и чтения и записи.
Все выводы порта В оснащены индивидуально подключаемыми встроенными нагрузочными резисторами. Выходные буферы порта В обеспечивают ток до 20 мА, что достаточно для прямого управления све тодиодными индикаторами. Если выводы РВО - РВ7 используются в ка честве входов и внешним сигналом удерживаются на низком уровне, то вытекающий ток обеспечивается подключением внутренних нагрузочных резисторов. Выводы порта В могут выполнять следующие альтернатив ные функции:
Альтернативные фукции выводов порта В
Вывод порта
РВО РВ1 РВ2 РВЗ РВ4 РВ5 РВ6 РВ7
Альтернативная функция
SS - вход выбора ведомого устройства SPI SCK - тактовый сигнал порта SPI
MOSI - линия выход ведущего / вход ведомого порта SPI MISO - линия вход ведущего / выход ведомого порта SPI OCOA/PWMOA - выход сравнения и PWM таймера/счетчикаО
OC1A/PWM1A - выход А сравнения и PWM таймера/счетчика1 OC1B/PWM1B - выход В сравнения и PWM таймера/счетчика 1 OC2/PWM2 - выход сравнения и PWM таймера/счетчика2
178 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
|
При использовании выводов для выполнения альтернативных функ ций регистры DDRB й PORTB должны быть установлены соответствую щим образом.
Регистр данных порта В - PORTB
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
$ 18($ 38) PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTBO PORTB |
||||||||
Исх.код |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Регистр направления данных порта В - DDRB
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
$17 ($37) DDB7 |
DDB6 |
DDB5 |
DDB4 |
DDB3 |
ODB2 |
DDB1 |
DDB0 DDRB |
|
Исх.код |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
|
Регистр выводов входа порта В - |
PINВ |
|
||||
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
PINB7 |
PINB6 |
PINB5 |
PINB4 |
PINB3 |
PINB2 |
PINB1 |
PINB0 |
PINB |
Исх.код |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
PINB не является регистром, обращение по этому адресу обеспечива ет чтение логического состояния каждого вывода порта. При чтении реги стра PORTB читается состояние защелок данных порта В.
Все восемь выводов порта В при его использовании в качестве циф рового устройства ввода/вывода работают одинаково. Соответствующий бит DDBn определяет направление вывода, а бит PORTBn = 1 при рабо те вывода в качестве входа подключает нагрузочный резистор. После сброса выводы портов находятся в третьем состоянии.
Воздействие битов DDBn на работу выводов порта В
DDBn PORTBn |
I/O |
Нагрузочный |
Описание |
|
|
резистор |
|
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
Вход |
Не подключен |
Третье состояние |
Вход |
Подключен |
При входном низком уровне РВп |
|
|
обеспечивает вытекающий ток |
Выход |
Не подключен |
Низкий уровень, двухтактный выход |
Выход |
Не подключен |
Высокий уровень, двухтактный выход |
4.4.3. Порт С
Порт С представляет собой 8-разрядный выходной порт. Кроме ос новной функции выводы порта С выполняют альтернативную функцию при работе с внешней памятью данных. В этом режиме через линии порта С выводится старший байт адреса внешней памяти.