Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Сбои в лабораторном комплексе и их устранение
Основным сбоем в работе лабораторного комплекса является отсутствие связи ПЭВМ с рабочими местами. Об этом на рабочем месте сигнализирует загорание красного светодиода " Запрет обмена" блока управления. – убедиться, что переключатель режима работы блока связи с ПЭВМ стоит в положении " Программирование"; Если все указанные переключатели стоят в требуемых положениях и подключен порт 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; Просмотров: 986; Нарушение авторского права страницы