Сбои в лабораторном комплексе и их устранениеОсновным сбоем в работе лабораторного комплекса является отсутствие связи ПЭВМ с рабочими местами. Об этом на рабочем месте сигнализирует загорание красного светодиода "Запрет обмена" блока управления. – убедиться, что переключатель режима работы блока связи с ПЭВМ стоит в положении "Программирование"; Если все указанные переключатели стоят в требуемых положениях и подключен порт COM2 к блоку связи с ЭВМ, но по-прежнему нет связи рабочих мест с ПЭВМ, то следует выключить питание всех элементов комплекса. Затем включить блок питания лабораторного комплекса. Нажимая последовательно на каждом рабочем месте кнопку "Сброс" блока управления, убедиться что нет рабочих мест с одинаковыми номерами. На всех блоках управления горят светодиоды "Запрет обмена". Включить питание ПЭВМ. В подкаталоге SERVER запустить файл server.bat и обеспечить восьмиоконный режим работы монитора, светодиоды "Запрет обмена" на блоках управления рабочих мест должны погаснуть. Если описанные действия не дают положительного результата, то следует отключить все кабели рабочих мест от блока связи с ЭВМ. Подключить к блоку связи кабель одного рабочего места. Проверить есть ли связь с ПЭВМ этого единственного места. Если нет, то, возможно, что неисправен кабель этого рабочего места. Отключить его и аналогично, подключая кабели других рабочих мест к блоку связи с ЭВМ, проверить исправность их кабелей. Неисправность кабеля хотя бы одного рабочего места приводит к отсутствию связи рабочих мест с ПЭВМ. Если же все блоки управления ведут себя одинаково, то причина не в кабелях рабочих мест. Если обмен с ПЭВМ есть, но какое-то рабочее место ведет себя неадекватно, например, при нажатии кнопки "Сброс" появляется номер рабочего места не в левом верхнем углу ЖКИ, а где-то в середине, то, не отключая питание комплекса, отключите и включите вновь кабель блока управления этого рабочего места. Нажмите кнопку "Сброс" этого рабочего места. Номер рабочего места должен высвечиваться на положенном ему месте. Иногда эту операцию нужно повторить несколько раз, или при отключении рабочего места подождать несколько секунд и подключить его. |
Система команд микроконтроллеров семейства AVR
3. Система команд микроконтроллеров семейства AvR |
Таблица 3.1. Арифметические и логические команды
Мнемо-ника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
ADD | Rd,Rr 0<=d<=31 0<=r<=31 | Сложить без переноса | Rd <-Rd + Rr | Z, C, N, v, H | |
ADC | Rd.Rr 0<=d<=31 0<=r<=31 | Сложить с переносом | Rd <- Rd + Rr+ С | Z, C, N, v, H | |
ADIW | Rd,K dE{24,26,28,30} 0<=K<=63 | Сложить непосредственное значение со словом | Rdh:Rdl<-Rdh:Rdl+ К | Z, C, N, v | |
SUB | Rd,Rr 0<=d<=31 0<=r<=31 | Вычесть без заема | Rd <- Rd – Rr | Z, C, N, v, H | |
SUBI | Rd, К 16<=d<=31 0<=K<=255 | Вычесть непосредственное значение | Rd <- Rd – К | Z, C, N, v, H | |
SBC | Rd, Rr 0<=d<=31 0<=r<=31 | Вычесть с заемом | Rd<--Rd-Rr-C | Z, C, N, v, H | |
SBCI | Rd, К 16<=d<=32 0<=K<=255 | Вычесть непосредственное значение с заемом | Rd<--Rd-K-C | Z, C, N, v, H | |
SBIW | Rd, К dE{24,26,28,30} О<=К<=бЗ | Вычесть непосредственное значение из слова | Rdh:Rdl<--Rdh:Rdl-K | Z, C, N, v | |
AND | Rd, Rr 0<=d<=31 0<=r<=31 | Выполнить логическое AND | Rd <-- Rd * Rr | Z, N, v | |
ANDI | Rd, К 16<d<31 0<k<=255 | Выполнить логическое AND | Rd <-- Rd * К | Z, N, v | |
OR | Rd, Rr 0<=d>=31 0<=r<=31 | Выполнить логическое OR | Rd <--Rd v Rr | Z, N, v | |
ORI | Rd, К 16<=d<=31 0<=K<=255 | Выполнить логическое OR с непосредственным значением | Rd <--Rd v К | Z, N, v | |
EOR | Rd, Rr 0<=d<=31 0<=г<=31 | Выполнить исключающее OR | Rd <--Rd Rr | Z, N, v | |
СОМ | Rd 0<=d<=31 | Выполнить дополнение до единицы | Rd<--SFF-Rd | Z, C, N, v | |
NEG | Rd 0<=d<=31 | Выполнить дополнение до двух | Rd <-- S00 - Rd | Z, C, N, v, H | |
SBR | Rd, К 16<=d<=31 0<=K<=255 | Установить биты в регистре | Rd <-- Rd v К | Z, N,v |
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
CBR | Rd, К 16<=d<=31 O<=K<=255 | Очистить биты в регистре | Rd <--Rd * (SFF - К) | Z, N, v | |
INC | Rd 0<=d<=31 | Инкрементировать | Rd <--Rd + 1 | Z, N,v | |
DEC | Rd 0<=d<=31 | Декрементировать | Rd <-- Rd - 1 | Z, N,v | |
TST | Rd 0<=r<=31 | Проверить на ноль или минус | Rd<--Rd.Rd | Z, N, v | |
CLR | Rd 0<=d<=31 | Очистить регистр | Rd <-- Rd (+) Rd | Z, N, v | |
SER | Rd 16<=d<=31 | Установить все биты регистра | Rd <--SFF | нет | |
CP | Rd, Rr 0<=d<=31 0<=r<=31 | Сравнить | Rd-Rr | Z, C, N, v, H | |
CPC | Rd, Rr 0<=d<=31 0<=r<=31 | Сравнить с учетом переноса | Rd-Rr-C | Z, C, N, v, H | |
CPI | Rd, К 16<=d<=31 0<=K<=255 | Сравнить с константой | Rd-K | Z, C, N, v, H |
Таблица 3.2. Команды сдвигов и операций с битами
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
LSL | Rd 0<=d<=31 | Логически сдвинуть влево | Rd(n+1)<--Rd(n), Rd(0)<--0, C<--Rd(7) | Z,C,N,v,H | |
LSR | Rd 0<=d<=31 | Логически сдвинуть вправо | Rd(n)<--Rd(n+1), Rd(7) <--0, C<--Rd(0) | Z,C,N,v | |
ROL | Rd 0<=d<=31 | Сдвинуть влево через перенос | Rd(0) <--C, Rd(n+1)<--Rd(n), C<--Rd(7) | Z,C,N,v,H | |
ROR | Rd 0<=d<=31 | Сдвинуть вправо через перенос | Rd(7) <--C, Rd(n)<--Rd(n+1), C <-- Rd(0) | Z,C,N,v | |
ASR | Rd 0<=d<=31 | Арифметически сдвинуть вправо | Rd(n)<--Rd(n+1), n=0...6, Rd(0)<--C | Z,C,N,v | |
SWAP | Rd 0<=d<=31 | Поменять нибблы местами | Rd(3...0) <–>Rd(7...4) | Нет | |
BSET | s 0<=s<=7 | Установить флаг | SREG(s)<-- 1 | SREG(s) | |
BCLR | s 0<=s<=7 | Очистить флаг | SREG(s)<-- 0 | SREG(s) |
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
SBI | P,b O<=P<=31 0<=b<=7 | Установить бит в регистр I/O | l/0(P,b)<-- 1 | Нет | |
CBI | P,b 0<=P<=31 0<=b<=7 | Очистить бит в регистре I/O | l/0(P,b)<-- 0 | Нет | |
BST | Rd,b 0<=d<=31 0<=b<=7 | Переписать бит из регистра во флаг Т | Т<-- Rd(b) | Т | |
BLD | Rd,b 0<=d<=31 0<=b<=7 | Загрузить Т флаг в бит регистра | Rd(b) <-- Т | Нет | |
SEC | Установить флаг переноса | С<-- 1 | С | ||
CLC | Очистить флаг переноса | С<--0 | С | ||
SEN | Установить флаг отрицательного значения | М<--1 | N | ||
CLN | Очистить флаг отрицательного значения | N<--0 | N | ||
SEZ | Установить флаг нулевого значения | Z<--1 | Z | ||
CLZ | Очистить флаг нулевого значения | Z<--0 | Z | ||
SEI | Установить флаг глобального прерывания | I<-- 1 | I | ||
CLI | Очистить флаг глобального прерывания | I<--0 | I | ||
SES | Установить флаг знака | S<-- 1 | S | ||
CLS | Очистить флаг знака | S<--0 | S | ||
SEv | Установить флаг переполнения | v<-- 1 | v | ||
CLv | Очистить флаг переполнения | v<--0 | v | ||
SET | Установить флаг Т | T<--1 | T | ||
CLT | Очистить флаг Т | Т<--0 | T | ||
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
SEH | Установить флаг полу переноса | Н<-- 1 | Н | ||
CLH | Очистить флаг полу переноса | Н<--0 | Н | ||
NOP | Выполнить холостую команду | Нет | |||
SLEEP | Установить режим SLEEP | Нет | |||
WDR | Сбросить сторожевой таймер | Нет |
Таблица 3.3. Команды пересылки данных
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
ELPM | Расширенная загрузка из памяти программ в регистр RO | R0<-- (Z+RAMPZ) | Нет | ||
MOv | Rd,Rr 0<=d<=31 0<=r<=31 | Копировать регистр | Rd<--Rr | Нет | |
LDI | Rd,k 16<=d<=31 0<=k<=255 | Загрузить непосредственное значение | Rd<--K | Нет | |
LDS | Rd,k 0<=d<=31 0<=k<=65535 | Загрузить из ОЗУ | Rd<--(k) | Нет | |
LD | Rd,X 0<=d<=31 | Загрузить косвенно | Rd <-- (X) | Нет | |
LD | Rd,X+ 0<=d<=31 | Загрузить косвенно с постинкрементом | Rd <-- (X), X<--X+1 | Нет | |
LD | Rd,X- 0<=d<=31 | Загрузить косвенно с преддекрементом | X<--X-1, Rd <-- (X) | Нет | |
LD | Rd,Y 0<=d<=31 | Загрузить косвенно | Rd<--(Y), | Нет | |
LD | Rd,Y+ 0<=d<=31 | Загрузить косвенно с постинкрементом | Rd<--(Y), Y<--Y+1 | Нет | |
LD | Rd,Y 0<=d<=31 | Загрузить косвенно с преддекрементом | Y<--Y-1, Rd <-- (Y) | Нет | |
LDD | Rd,Y+q 0<=d<=31 0<=q<=63 | Загрузить косвенно со смещением | Rd<--(Y+q) | Нет | |
LD | Rd,Z 0<=d<=31 | Загрузить косвенно | Rd <-- (Z) | Нет | |
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
LD | Rd,Z+ 0<=d<=31 | Загрузить косвенно с постинкрементом | Rd <-- (Z), Z<--Z+1 | Нет | |
LD | Rd,-Z 0<=d<=31 | Загрузить косвенно с преддекрементом | Z<--Z-1, Rd<--(Z) | Нет | |
LDD | Rd,Z+q 0<=d<=31 0<=q<=31 | Загрузить косвенно со смещением | Rd <-- (Z+q) | Нет | |
STS | k,Rr 0<=d<=31 0<=k<=65535 | Загрузить непосредственно в ОЗУ | (k) <--Rr | Нет | |
ST | X,Rr 0<=r<=31 | Записать косвенно | (X) <-- Rr | Нет | |
ST | X+,Rr 0<=r<=31 | Записать косвенно с постинкрементом | (X) <--Rr, X<--X+ 1 | Нет | |
ST | -X,Rr 0<=r<=31 | Записать косвенно с преддекрементом | X<--X-1, (X) <--Rr | Нет | |
ST | Y,Rr 0<=r<=31 | Записать косвенно | (Y) <--Rr | Нет | |
ST | Y+,Rr 0<=r<=31 | Записать косвенно с постинкрементом | (Y) <-- Rr, Y<--Y+ 1 | Нет | |
ST | -Y,Rr 0<=r<=31 | Записать косвенно с преддекрементом | Y<--Y-1, (Y) <-- Rr | Нет | |
STD | Y+q,Rr 0<=r<=31 0<=q<=63 | Записать косвенно со смещением | (Y+q)<--Rr | Нет | |
ST | Z,Rr 0<=r<=31 | Записать косвенно | (Z) <--Rr | Нет | |
ST | Z+,Rr 0<=r<=31 | Записать косвенно с постинкрементом | (Z) <-- Rr, Z<--Z+ 1 | Нет | |
ST | -Z,Rr 0<=r<=31 | Записать косвенно с преддекрементом | Z<--Z-1, (Z) <-- Rr | Нет | |
STD | Z+q,Rr 0<=r<=31 0<=q<=63 | Записать косвенно со смещением | (Z+q)<--Rr | Нет | |
LPM | Загрузить байт из памяти программ | R0 <-- (Z) | Нет | ||
IN | Rd,P 0<=d<=31 0<=P<=63 | Загрузить данные из порта I/O в регистр | Rd<--P | Нет | |
OUT | P,Rr 0<=r<=31 0<=P<=63 | Записать данные из регистра в порт I/O | P<--Rr | Нет | |
PUSH | Rr 0<=r<=31 | Сохранить регистр в стеке | STACK <--Rr | Нет |
Таблица 3.4. Команды переходов
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
RJMP | k -2K<k<2K | Перейти относительно | PC <--PC + k + 1 | Нет | |
LJMP | Перейти косвенно | PC<--Z | Нет | ||
JMP | k 0<k<4M | Перейти | PC<--k | Нет | |
RCALL | k -2K<=k<=2K | Вызвать подпрограмму относительно | PC <-- PC + k + 1 | Нет | |
ICALL | Вызвать подпрограмму косвенно | PC<--Z | Нет | ||
CALL | k 0<=k<=64K | Выполнить длинный вызов подпрограммы | PC<--k | Нет | |
RET | Вернуться из подпрограммы | PC <-- STACK | Нет | ||
RETI | Вернуться из прерывания | PC <-- STACK | I | ||
CPSE | Rd,Rr 0<=d<=31, 0<=r<=31 | Сравнить и пропустить, если равно | If Rd=Rr then PC <-- PC + 2 (or 3) | Нет | (1/2)/3 |
SBRC | Rr,b 0<=r<=31 0<=b<=7 | Пропустить, если бит в регистре очищен | if Rr(b)=0 then PC <-- PC + 2 (or 3) | Нет | (1/2)/3 |
SBRS | Rr,b 0<=r<=31 0<=b<=7 | Пропустить, если бит в регистре установлен | If Rr(b)=1 then PC <--PC + 2 (or 3) | Нет | (1/2)/3 |
SBIC | P,b 0<=P<=31 0<=b<=7 | Пропустить, если бит в регистре I/O очищен | if l/O P(b)=0 then PC <-- PC + 2 (or 3) | Нет | (1/2)/3 |
SBIS | P,b 0<=r<=31 0<=b<=7 | Пропустить, если бит в регистре I/O установлен | If l/O P(b)=1 then PC <--PC + 2 (or 3) | Нет | (1/2)/3 |
BRBS | s,k 0<=s<=7 -64<=k<=+63 | Перейти, если бит в регистре статуса установлен | if SREG(s)=1 then PC <-- PC + k + 1 | Нет | (1/2) |
BRBC | s,k 0<=s<=7 -64<=k<=+63 | Перейти, если бит в регистре статуса очищен | if SREG(s)=0 then PC <-- PC + k + 1 | Нет | (1/2) |
BREQ | k -64<=k<=+63 | Перейти, если равно | if Rd=Rr (Z=1) then PC <-- PC + k + 1 | Нет | (1/2) |
BRNE | k -64<=k<=+63 | Перейти, если не равно | if Rd != Rr(Z=0) then PC<<--PC+ k+ 1 | Нет | (1/2) |
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов | |||
BRCS | k -64<=k<=+63 | Перейти, если флаг переноса установлен | if C=1 then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRCC | k -64<=k<=+63 | Перейти, если флаг переноса очищен | if C=0 then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRSH | K -64<=k<=+63 | Перейти, если равно или больше (без знака) | if Rd<Rr(C=0) then PC<--PC+ k+ 1 | Нет | 1/2 | |||
BRLO | k -64<=k<=+63 | Перейти, если меньше (без знака) | if Rd<Rr (C=1) then PC <--PC + k + 1 | Нет | 1/2 | |||
BRMI | k -64<=k<=+63 | Перейти, если минус | if N=1 then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRPL | k -64<=k<=+63 | Перейти, если плюс | if N=0 then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRGE | k -64<=k<=+63 | Перейти, если больше или равно (с учетом знака) | if Rd>Rr (N(+)v=0) then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRLT | k -64<=k<=+63 | Перейти, если меньше чем (со знаком) | if Rd<Rr (N(+)v=1)then PC <--PC + k+ 1 | Нет | 1/2 | |||
BRHS | K -64<=k<=+63 | Перейти, если флаг полупереноса установлен | if H=1 then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRHC | k -64<=k<=+63 | Перейти, если флаг полупереноса очищен | if H=0 then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRTS | k -64<=k<=+63 | Перейти, если флаг Т установлен | if T=1 then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRTC | k -64<=k<=+63 | Перейти, если флаг Т очищен | if T=0 then PC <-- pc + k + 1 | Нет | 1/2 | |||
BRvS | k -64<=k<=+63 | Перейти, если флаг переполнения установлен | if v=1 then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRvC | k -64<=k<=+63 | Перейти, если флаг переполнения очищен | if v=0 then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRIE | k -64<=k<=+63 | Перейти, если глобальное прерывание разрешено | if I=1 then PC <-- PC + k + 1 | Нет | 1/2 | |||
BRID | k -64k<=k<=+63 | Перейти, если глобальное прерывание запрещено | if I=0 then PC <-- PC + k + 1 | Нет | 1/2 | |||
Последнее изменение этой страницы: 2016-03-22; Просмотров: 67;