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