
- •1. Техническое описание лабораторного комплекса
- •1.1. Назначение комплекса
- •1.2. Состав комплекса
- •1.3. Технические данные комплекса
- •1.4. Структура комплекса и общие принципы работы
- •1.5 Общие принципы работы с комплексом
- •1.5.2 Ассемблер микроконтроллеров avr и его особенности
- •1.5.2.2 Система команд
- •1.5.2.3 Директивы ассемблера
- •Cseg - Code segment
- •Dseg - Data Segment
- •Eseg - eeprom Segment
- •Org - Установить адрес начала программы
- •Db - определить байт(ы) в программной памяти или в eeprom
- •Dw – Определить слово(а) в программной памяти или в eeprom
- •Def – Присвоить имя регистру
- •Equ – Присвоить имя выражению
- •Include –вставить другой файл
- •1.5.3.1 Написание программы
- •1.7 Сбои в лабораторном комплексе и их устранение
1.5.3.1 Написание программы
Текст программы можно набирать в любом текстовом редакторе, такие как встроенный редактор Norton Commander, FAR, а также Microsoft Word, WordPad и других. Также можно использовать специально предназначенные для этого программы Wavrasm, AVR Studio
Для создания программы не обязательно использовать ассемблер, программное обеспечение AVR поддерживает также и язык C или С++. Но в лабораторном комплексе этот вариант не рассматривается.
Программа, написанная на ассемблере, должна иметь определенную структуру.
Предлагается следующий шаблон (для AT90S8535)
;*******************************************
; название программы,
; краткое описание, необходимые пояснения
:*******************************************
;******подключаемые дополнительные файлы
.include “8535def.inc” ; файл описания AT90S8535
.include «имя_файла1.расширение» ; включение дополнительных
.include «имя_файла2.расширение» ; файлов
;******глобальные константы
.equ имя1 = xxxx ;
.equ имя2 = nnnn
;******глобальные регистровые переменные
.def имя1= регистр
.def имя2= регистр
;*******сегмент данных
.dseg
.org xxxx ; адрес первого зарезервированного байта
label1: .BYTE 1 ; резервировать 1 байт под переменную label1 label2: .BYTE m ; резервировать m байт под переменную label2
;****** сегмент EEPROM (ЭСППЗУ)
.eseg
.org xxxx ; адрес первого зарезервированного байта
.db выражение1,выражение2,… ; записать список байтов в EEPROM.
.dw выражение1,выражение2,… ; записать список слов в EEPROM.
;******сегмент кодов
.cseg
.org $0000 ; адрес начала программы в программной памяти
;****** вектора прерываний (если они используются)
rjmp reset ;прерывание по сбросу
.org $0002
rjmp INT0 ;обработчик прерывания IRQ0
.org $0004
rjmp INT1 ;обработчик прерывания IRQ1
.org adrINTx ;адрес следующего обработчика прерываний
rjmp INTx ;обработчик прерывания x
……. ;далее по порядку располагать обработчики остальных ;прерываний
;*******начало основной программы
main: <команда> xxxx
… …
;******* подпрограммы
;*******подпрограмма 1
subr1: <команда> xxxx
…… ………. ……
ret
;*******подпрограмма 2
subr2: <команда> xxxx
…… ………. ……
ret
…………….
;******* программы обработчиков прерываний
INT0: <команда> xxxx
…… ………. ……
reti
INT1: <команда> xxxx
…… ………. ……
reti
INTx: <команда> xxxx
…… ………. ……
reti
………………………
; конец программы никак не обозначается.
Ниже приводятся 3 программы решения одной и той же простейшей программы, демонстрирующие использование директив ассемблера.
Как уже указывалось, программа простейшая: вычесть из числа 5 число 3. Если включен тумблер SA1 (рис. 1.2), то на индикацию выдать результат вычитания. Если тумблер SA1отключен – на индикацию вывести цифру ноль.
Алгоритм программы (рис. 1.5) соответствует программе №1, использующей директиву equ ассемблера.
Программа №2 отличается от программы №1 резервированием по одному байту оперативной памяти под семисегментные коды цифр от 0 до 9.
Программа №3 самая короткая. Она использует директиву .dw для определения слов в программной памяти. В программе используется команда LPM ассемблера. По этой команде загружается байт, адресуемый регистром Z в регистр R0. Команда обеспечивает доступ к любому байту памяти программы, организованной как 16 битное слово. Младший бит регистра Z определяет, осуществляется ли доступ к младшему байту слова (0) или к старшему (1).
Десятичное число |
Код |
0 |
3f |
1 |
06 |
2 |
5b |
3 |
4f |
4 |
66 |
5 |
6d |
6 |
7d |
7 |
07 |
8 |
7f |
9 |
6f |
Рис. 1.5 Алгоритм программы №1
;Программа №1.Использование директивы equ
.include "8535def.inc" ;включить файл – описание для AT90S8535
.dseg ;сегмент данных
.equ cod0=$64 ;присвоение имен ячейкам SRAM
.equ cod1=$65
.equ cod2=$66
.equ cod3=$67
.equ cod4=$68
.equ cod5=$69
.equ cod6=$6a
.equ cod7=$6b
.equ cod8=$6c
.equ cod9=$6d
.cseg
.org 0
rjmp reset
.org $30 ;начало программы
reset:
ldi r16,$00 ;определение стека с вершиной по адресу $00ff
out sph,r16
ldi r16,$ff
out spl,r16
ldi zl,$64 ;задание адреса начала зарезервированных ячеек
ldi zh,$00
ldi r16,$ff ;настроить порт С на выход
out ddrc,r16
ldi r16,00 ;настроить порт А на вход
out ddra,r16
ldi r16,$c ;настроить порт В: биты 2 и 3 на выход, остальные на вход
out ddrb,r16
ldi r16,$f0 ;настроить порт D: биты 0...4 на вход, остальные на выход
out ddrd,r16
sbi portB,3 ;выдать 1 на разряд 3 порта В
ldi r17,$3f ;задание семисегментных кодов
sts cod0,r17
ldi r17,$06
sts cod1,r17
ldi r17,$5b
sts cod2,r17
ldi r17,$4f
sts cod3,r17
ldi r17,$66
sts cod4,r17
ldi r17,$6d
sts cod5,r17
ldi r17,$7d
sts cod6,r17
ldi r17,$07
sts cod7,r17
ldi r17,$7f
sts cod8,r17
ldi r17,$6f
sts cod9,r17
ldi r17,5 ;задание уменьшаемого
ldi r18,3 ;задание вычитаемого
m1: sbis pina,4 ;если включен тумблер SA1,то пропустить
rjmp m2 ;следующую команду
mov r20,r17 ; в r20 поместить уменьшаемое
sub r20,r18 ; вычесть вычитаемое
rjmp vv
m2:
ldi r20,0
vv:
push zl ;сохранить zl в стеке
add zl,r20 ;сложить zl с результатом
ld r0,z ;семисегментный код результата переслать в r20
pop zl ;извлечь zl из стека
out portc,r0 ;выдать результат на индикацию
rjmp m1
;Программа №2. Использование оперативной памяти под переменные
.include "8535def.inc" ;подключение файла описания AT90S8535
.dseg ;сегмент данных
.org $64 ;адрес первого зарезервированного байта
cod0:.byte 1 ;резервирование по одному байту под переменные
cod1:.byte 1
cod2:.byte 1
cod3:.byte 1
cod4:.byte 1
cod5:.byte 1
cod6:.byte 1
cod7:.byte 1
cod8:.byte 1
cod9:.byte 1
.cseg ;сегмент кодов
.org $0 ;адрес начала программы в программной памяти
rjmp reset ;прерывание по сбросу при подаче питания
;или при нажатии на кнопку "Сброс"
reset:
ldi r16,$00 ;определение стека с вершиной по адресу $00ff
out sph,r16
ldi r16,$ff
out spl,r16
ldi zl,$64 ;задание адреса начала зарезервированных ячеек
ldi zh,$00
ldi r16,$ff ;настроить порт С на выход
out ddrc,r16
ldi r16,00 ;настроить порт А на вход
out ddra,r16
ldi r16,$c ;настроить порт В: биты 2 и 3 на выход, остальные на вход
out ddrb,r16
ldi r16,$f0 ;настроить порт D: биты 0...4 на вход, остальные на выход
out ddrd,r16
sbi portb,3 ;выдать 1 на разряд 3 порта В
ldi r17,$3f ;задание семисегментных кодов
sts cod0,r17
ldi r17,$06
sts cod1,r17
ldi r17,$5b
sts cod2,r17
ldi r17,$4f
sts cod3,r17
ldi r17,$66
sts cod4,r17
ldi r17,$6d
sts cod5,r17
ldi r17,$7d
sts cod6,r17
ldi r17,$07
sts cod7,r17
ldi r17,$7f
sts cod8,r17
ldi r17,$6f
sts cod9,r17
ldi r17,5 ;задание уменьшаемого
ldi r18,3 ;задание вычитаемого
m1: sbis pina,4 ;если включен тумблер SA1,то пропустить
rjmp m2 ;следующую команду
mov r20,r17 ; в r20 поместить уменьшаемое
sub r20,r18 ; вычесть вычитаемое
rjmp vv
m2:
ldi r20,0
vv: push zl ;сохранить zl в стеке
add zl,r20 ;сложить zl с результатом
ld r0,z ;семисегментный код результата переслать в r20
pop zl ;извлечь zl из стека
out portc,r0 ;выдать результат на индикацию
rjmp m1
;Программа №3. Использование директивы .dw
.include "8535def.inc" ;подключение файла описания AT90S8535
.cseg
.org 0
rjmp reset
.dw $063f,$4f5b,$6d66,$077d,$6f7f,$7c77,$5e39,$7179 ;семисегментные коды
reset:
ldi r16,$00 ;определение стека с вершиной по адресу $00ff
out sph,r16
ldi r16,$ff
out spl,r16
ldi r16,$ff
out ddrc,r16 ;настроить порт С на выход
ldi r16,00
out ddra,r16 ;настроить порт А на вход
ldi r16,$c
out ddrb,r16 ;настроить порт В: биты 2 и 3 на выход, остальные на вход
ldi r16,$f0
out ddrd,r16 ;настроить порт D: биты 0...4 на вход, остальные на выход
sbi portb,3 ;выдать 1 на разряд 3 порта В
ldi zl,02 ;установить адрес семисегментного кода нуля в регистр Z
ldi zh,00
ldi r17,5 ;задание уменьшаемого
ldi r18,3 ;задание вычитаемого
m1: sbis pina,4 ;если включен SA1, то пропустить следующую команду
rjmp m2
mov r20,r17 ;в r20 поместить уменьшаемое
sub r20,r18 ;вычесть вычитаемое
rjmp vv
m2:
ldi r20,0 ;присвоить результату значение нуль
vv: push zl ;сохранить zl в стеке
add zl,r20 ; сложить zl с результатом
lpm ;загружаем бит, адресуемый регистром Z, в регистр R0
pop zl ;извлечь zl из стека
out portc,r0 ;выдать результат на индикацию
rjmp m1
1.5.4 Ввод программы
Подготовленная программа вводится в ПЭВМ с рабочего места после включения комплекса в работу.
Включение комплекса, собранного по схеме рис.1, осуществляется включением составных частей ПЭВМ и нажатием кнопки включения на блоке питания комплекса БП. Номер рабочего места устанавливается переключателем внутри блока управления и должен совпадать с номером на блоке связи с ЭВМ.
Переключатель режима работы платы ЖКИ рабочего места необходимо поставить в положение “Программирование”. При нажатии на кнопку “Сброс” блока управления на ЖКИ появляется надпись “Место” с соответствующим номером. Этому номеру будет соответствовать окно на экране дисплея ПЭВМ.
Программное обеспечение располагается в каталоге STAND90, в котором есть два подкаталогаSERVERиPK&MK. Программное обеспечение работает в средеWINDOWS. ПрограммаSERVERзапускается файломserver.bat, программаPK&MK– файломPk&mk.exe.
Сразу после запуска программы-сервера на экран выводится меню из трех пунктов: 1 – удалить старые файлы (например, оставшиеся после предыдущей работы), 2 – загрузить старые файлы (для продолжения работы с ними), 3 – любая другая клавиша (например, пробел или Esc) – не удалять и не загружать. После нажатия соответствующей клавиши на экране появляется восемь окон.
Пример содержимого экрана ПЭВМ во время работы программы представлен на рис. 1.6.
Каждое окно имеет надпись “Место” с номером рабочего места и область размером 4х16 знакомест, в которой отображается информация, выводимая на ЖКИ соответствующего рабочего места. Внизу экрана имеется строка, в которой описаны “горячие” клавиши – клавиши и сочетания клавиш, нажатия на которые вызывают определенные действия.
Из “горячих” клавиш студенту доступна только клавиша F6 (просмотр ошибок). Назначение “горячих” клавиш представлено в табл. 1.3.
Узлы набора программ рабочих мест имеют встроенный микроконтроллер AT89C51 для управления ЖКИ и клавиатурой. Микроконтроллер передает клавиатурные коды с рабочих мест в ПЭВМ и отображает принятые от ПЭВМ данные на ЖКИ.
Рис. 1.6. Изображение на экране ПЭВМ
Таблица 1.3.
«Горячие» клавиши
Alt–X |
Выход из программы |
Alt–номер |
Выбор номера места, с которым работает преподаватель: “номер” – число от 1 до 8. Выбранное окно выделяется цветной рамкой |
F2 |
Запись программы выбранного места из ОЗУ на винчестер |
F4 |
Включение режима редактирования (и листания) преподавателем программы выбранного места; при этом запрещен ввод программы с соответствующего рабочего места |
F5 |
“Распахивание” выбранного окна на половину экрана; при этом преподаватель может листать текст программы независимо от студента. Повторное нажатие F5 возвращает экран в исходное состояние |
F6 |
Переключение на режим просмотра ошибок в программе выбранного места; это переключение возможно только из режима редактирования. |
F8 |
Очистка текстового буфера выбранного места; для сохранения очистки нужно после этого нажать клавишу F2. |
F9 |
Запуск процесса компиляции или печати |
После появления восьмиоконного изображения на экране, студент нажимает кнопку «Сброс» блока управления и клавишу «Пробел» на клавиатуре рабочего места. Появляется на ЖКИ точно такое же изображение как в соответствующем окне монитора ПЭВМ. Теперь можно проводить на своем рабочем месте набор подготовленной дома программы.
Так как у ЖКИ в строке только 16 знакомест, в которые должна укладываться директива или команда, то возникают сложности с размещением «длинных» директив или команд. К «длинной» директиве, требующей более 16 знакомест, относится и необходимая в каждой программе в обязательном порядке директива .include “8535def.inc”. С клавиатуры ЖКИ ввести её в ПЭВМ невозможно. Поэтому в программном обеспечении комплекса предусмотрено ввод этой директивы в программу, которую набирает обучаемый, до компиляции. Таким образом, если эта директива не будет введена в программу, то она будет проставлена автоматически и ошибки не возникнет. Но необходимо отметить, что если эта директива будет введена с рабочего места не полностью, то это вызовет ошибку компиляции. Поэтому эту директиву с рабочего места вводить не нужно.
Об ограничениях на «длинные» команды и директивы следует помнить при использовании директивы .dw(см. программу №3). В одной строке можно разместить только саму директиву .dwи два шестнадцатиразрядных слова. Если нужно разместить слов больше двух, то нужно многократно использовать эту директиву.
Используемый в комплексе ЖКИ содержит знакогенератор только латинского алфавита, поэтому комментарии с рабочего места можно записывать только с использованием латинских букв.
После набора и просмотра программы студент подходит к преподавателю и сообщает о завершении набора программы. Преподаватель предупреждает студентов о временном прекращении их работы и выбирает окно на экране дисплея нажатием клавиш Alt+ цифра номера рабочего места. Нажимает клавишуF4 (редактирование), просматривает программу и при необходимости вводит соответствующие коррективы в программу. Затем нажимает клавишуF9 (компиляция программы).
После компиляции программы появляется на экране монитора сообщение о наличии и количестве ошибок в программе (если они есть), например, такого вида “Assemble complete with 1 error”. Или сообщение об их отсутствии “Assemble complete with no errors” и предложение выбора действия в виде сообщения:
Выберите:
ESC – продолжение редактирования;
1 – прошивка микроконтроллера;
2 – печать текста программы;
3 – печать листинга.
При наличии ошибок необходимо нажать клавишу ESC. Восстанавливается связь с рабочими местами. Студент идет на рабочее место для анализа и исправления ошибок. В его распоряжении «горячая» клавиша F6. При нажатии этой клавиши на экране ЖКИ появляется сообщение о первой ошибке, например, такого вида, если вместо .org $000 напечатано в программе .rg $000.
.rg
$000 Ошибка
#23 Неправильная директива
Студент оценивает, как нужно исправить ошибку, нажимает вновь на клавишу F6 и возвращается в режим редактирования. Курсор стоит на строке с ошибкой. Студент исправляет ошибку и вновь нажимает клавишу F6. Опять высвечивается та же строка, но уже с исправлениями, однако сообщение об ошибке сохраняется. Это сообщение об ошибке будет устранено потом при компиляции исправленной программы, разумеется, если исправление сделано правильно. Для перехода к следующей ошибке нужно нажать клавишу курсора . Появляется очередная строка с ошибкой. Анализируется ошибка этой строки, принимается решение об её устранении, нажимается вновь клавиша F6. Курсор указывает строку с ошибкой. После устранения ошибки вновь нажимается клавиша F6 и клавиша курсора для выявления очередной ошибки и т.д. После устранения последней ошибки нажатие клавиши курсора не приводит к очередному переводу.
После исправления всех ошибок студент с помощью преподавателя осуществляет компиляцию программы. Если ошибки устранены неправильно и они есть в программе, нажимается клавиша ESCклавиатуры преподавателя и студент вновь на своем месте устраняет ошибки. Если же ошибок нет, то можно приступить к записи программы в микроконтроллер.
1.5.5 Запись программы в микроконтроллер
Для записи программы в микроконтроллер по «подсказке», появляющейся на экране монитора после завершения компиляции, нажимается клавиша 1. Появляется надпись «Прошивка контроллера. Нажмите любую клавишу.»
После этого необходимо выполнить следующие операции:
– переключатель «Выбор рабочего места» блока связи с ПЭВМ нужно поставить в положение рабочего места студента;
– переключатель «Запись – Работа» блока связи с ЭВМ поставить в положение «Запись»;
– нажать любую клавишу клавиатуры преподавателя;
– по светодиодам блока связи с ЭВМ, контролирующим работу последовательного порта SPI, убедиться в наличии записи;
– при появлении сообщения «Запись окончена!!! Нажмите любую клавишу» нажать любую клавишу;
– при появлении восьмиоконного режима работы монитора переключатель «Запись – Работа» поставить в положение «Работа».
Пока переключатель «Запись – Работа» находится в положении «Запись» связь остальных рабочих мест с ПЭВМ, так же как и при компиляции, прерывается.
1.5.6 Проверка функционирования программы
Проверка правильности функционирования подготовленной и записанной в микроконтроллер программы своего варианта задачи студент проверяет на рабочем месте. При этой проверке связь рабочего места с ПЭВМ не нужна. Требуется только питание блока управления рабочего места, подаваемое от БП через БС по кабелю рабочего места.
После нажатия на кнопку «Сброс» начинается выполнение программы с нулевого адреса. Кнопками и тумблерами, в зависимости от запрограммированной задачи, даются необходимые команды и визуально контролируется работа программы.
Если в работе обнаружены отклонения от данной последовательности, то студент вносит необходимые коррективы в свою программу. Вновь повторяются процедуры компиляции, исправления возможных ошибок, записи программы в микроконтроллер и проверка функционирования программы. Лабораторная работа выполнена, если программа выполняет все заданные функции.
1.5.7 Вывод на печать программы и её листинга
Распечатки программы и её листинга являются частью отчетных материалов по работе. Для вывода программы и её листинга на печать необходимо выполнить следующее:
– одновременно нажать клавишу ALTи клавишу цифры номера рабочего места. На экране монитора выделяется необходимое окно;
– нажать клавишу F4. Вводится режим редактирования;
– нажать клавишу F9. Вводится режим компиляции;
– в появившемся после компиляции на экране монитора «меню», выбрать и нажать клавишу с цифрой 3 для печати программы или клавишу с цифрой 4 для печати листинга;
– далее, следуя подсказке на экране монитора, дать команду на работу принтера;
– для выхода после печати монитора в восьмиоконный режим работы нажать клавишу ESC.
Программа на языке ассемблера выводится на печать в том виде, в котором она хранится в ПЭВМ. При выводе на печать листинга программы следует учитывать следующее. Фирменная программа вывода листинга, даже для короткой программы выводит листинг на нескольких страницах формата А4. В нем отражается состояние портов, всех регистров и тому подобное. Вывод такого листинга «напрасный» перевод бумаги и времени при проведении лабораторных работ. Предусмотрена возможность вывода «укороченного» листинга, который выводится при наличии в программе ошибок. Этот листинг полезен для анализа ошибок и их последующего устранения.
Короче, если даётся команда на вывод листинга программы, в которой отсутствуют ошибки, то листинг выводится в полном объеме на нескольких листах, если же в программе есть ошибки, то выводится укороченный листинг.
Следует учесть, что при печати программы и её листинга ПЭВМ отключена от остальных рабочих мест. Это уже не те несколько десятков секунд, которые требуются для компиляции и записи программы в микроконтроллер. Время печати определяется объемом программы и используемым принтером. Поэтому решение, что и когда выводить на печать, принимает преподаватель.
Это является неизбежным недостатком комплекса, использующим одну ПЭВМ на несколько (до восьми) рабочих мест, по сравнению с идеальным случаем «Одна ПЭВМ – одно рабочее место».
1.5.8 Работа с виртуальным объектом автоматизации
Подготовленная дома программа управления виртуальным объектом вводится в ПЭВМ, компилируется и записывается в микроконтроллер рабочего места также, как описано в предыдущих пунктах.
Для демонстрации работы виртуального объекта при управлении от микроконтроллера по подготовленной программе необходимо проделать следующее:
– кабель рабочего места подключить к специальному разъему «Управление виртуальным объектом» БС;
– переключатель «Выбор режима работы» БС поставить в положение «Управление объектом». На блоках управления рабочих мест загорается светодиод «Запрет обмена»:
– переключатель «Режим» блока управления рабочего места поставить в положение «Управление объектом»;
– одновременным нажатием клавиш ALTиXклавиатуры преподавателя обеспечить выход из восьмиоконного режима монитора, в подкаталогSERVER;
– выйти из подкаталога SERVERи войти в подкаталогPK&MK;
– в подкаталоге PK&MKвыбрать и запустить файлpk&mk.exe. Появляется на экране заставкаMК&PC;
– нажать клавишу ESC. В верхнем левом углу экрана появится надпись «Тип процесса»;
– нажать клавишу «ENTER». На экран выводится меню виртуальных объектов;
– перемещением курсора отметить выбранный виртуальный объект;
– нажать клавишу «ENTER». Появится заставка названия виртуального объекта;
– вновь нажать клавишу «ENTER». На экране появится изображение виртуального объекта;
– убедится, что механизмы объекта находятся в исходном положении, предусмотренном в подготовленной программе. При наличии несоответствия положений механизмов требуемому, одновременным нажатием клавиш ALT и R выйти в режим ручного управления объектом с клавиатуры преподавателя. Нажимая на клавиши управления механизмами (нажатие клавиш указано под изображением объекта), установите механизмы в необходимые положения;
– нажатием клавиш Alt + K осуществить перевод на управление объектом с рабочего места комплекса. Нажать кнопку «Сброс» БУ. Наличие обмена информацией между ПЭВМ и микроконтроллером можно визуально наблюдать по светодиодам UART на лицевой панели БС. Желательно дополнительно в подпрограмме обмена информацией между ПЭВМ и микроконтроллером предусмотреть при входе в неё включение выбранного светодиода БУ и выключение его после завершения обмена. Мигание этого светодиода подтверждает наличие обмена;
– при отсутствии связи между микроконтроллером и ПЭВМ нужно вернуться в режим редактирования программы. Для этого необходимо одновременным нажатием клавиш Alt + X отключить изображение объекта, выйти из подкаталога РК&МК, войти в подкаталог SERVER, запустить файл server.bat и войти в восьмиоконный режим работы монитора. Переключатель «Выбор режима работа» БС поставить в положение «Программирование» и в положение «Набор программы» – переключить «Режим» БУ. Восстанавливается связь всех рабочих мест с ПЭВМ. Кабель рабочего места вставить в гнездо рабочих мест. Найдите в программе причину отсутствия обмена между микроконтроллером и ПЭВМ. После компиляции программы и записи ее в микроконтроллер вновь приступайте к процедурам управления виртуальным объектом;
– при наличии обмена информацией между микроконтроллером и ПЭВМ, подавая с кнопок (тумблеров) необходимые команды, наблюдайте работу механизмов объекта;
– при несоответствии работы механизмов объекта заданию вновь нужно вернуться в режим редактирования (описано выше) и внести коррективы в программу;
– работа завершена, если механизмы объекта работают в полном соответствии с заданием.
Программное обеспечение управления виртуальными объектами обеспечивает вывод на экран монитора циклограмм работы систем автоматизации для следующих виртуальных объектов:
– участок транспортировки изделий в методическую печь для их нагрева перед прокаткой (методическая печь);
– механизмы управления крышкой нагревательных колодцев обжимного прокатного стана (нагревательный колодец);
– участок сортировки и пакетирования годных и бракованных листов металла (сортировка листов);
участок сортировки труб большого диаметра (транспортировка труб);
станок для сверления глубоких отверстий (станок).
Для вывода циклограмм работы системы автоматизации на экран следует
нажать клавиши Alt + С, при этом на экране появляются циклограммы работы системы;
Построенные на экране циклограммы при необходимости можно вывести на печать, используя буфер обмена (клавиша Print Screen).
Выход из программы осуществляется нажатием клавиш Alt + X.
Как уже указывалось выше, при управлении виртуальным объектом и работе принтера связь рабочих мест с ПЭВМ прерывается. Поэтому выполнение этой завершающей работы одновременно с 8-ми рабочих мест невозможно. Реально одновременно могут работать два рабочих места. Это следует учитывать при организации проведения лабораторных работ.
1.6 Работа комплекса в режиме «Одна ПЭВМ – одно рабочее место»
Лабораторный комплекс может использоваться не только для проведения лабораторных работ со студентами. Можно его использовать для решения реальных задач (производственных), требующих подготовки и записи программы в микроконтроллеры AT90S8535 илиAT90S4434, используемые в качестве встраиваемых контроллеров.
В этом случае необходимо использование одного рабочего места. Можно отказаться от работы монитора ПЭВМ в восьмиоконном режиме и от ввода программы с клавиатуры рабочего места. Тогда ввод программы в ПЭВМ и её редактирование осуществляется с клавиатуры преподавателя. Исчезают затруднения с «длинными» директивами и командами, комментарии можно писать и на русском языке, более удобно работать с экраном монитора, чем с экраном ЖКИ.
В рассматриваемом режиме работы комплекса, который условно назван режимом «Одна ПЭВМ – одно рабочее место», БУ рабочего места используется для записи программы в микроконтроллер. Поэтому в схеме подключения комплекса ПЭВМ никаких изменений, по сравнению с режимом работы со студентами, нет. Из восьми рабочих мест используется только одно (остальные рабочие места могут быть отключены от БС).
В режиме «Одна ПЭВМ – одно рабочее место» изменяется использование программного обеспечения комплекса.
Для ввода программы используется программа AvrStudio.
Для запуска программы запустите файл AvrStudio.exe. Появится основное диалоговое окно программы.
В верхней части программы находится меню, в нем надо выбрать Project–>New. В появившемся окне выберите имя проекта (Project name), место на диске, куда сохранять проект (Location), а также тип проекта(Project type), щелкнув мышью на AVR assembler, затем щелкнув на кнопке OK.
Появится окно проектов (Project :), в котором находится дерево файлов. В него входят файлы, которые будут компилироваться, с расширением .asm (Assembler Files), а также дополнительные файлы библиотек (Other Files). На ветви Assembler Files необходимо щелкнуть правой кнопкой мыши появится меню, в нем необходимо выбрать пункт Create New File.
В появившемся окне выбрать имя файла (Name), обязательно с расширением .asm и нажать кнопку OK.
В открывшемся окне проектов появится в дереве файлов отдельной ветвью имя файла. Его нужно перетащить, удерживая на нем правую кнопку мыши на ветвь Assembler Files. После этого щелкнув правой клавишей мыши снова вызвать меню и выбрать пункт параметры проекта (Project Settings). В появившемся окне AVR Assembler Options в пункте формат выходного файла (Output file format:) выбрать Intel Intellec 8/ MDS (Intel Hex), нажать OK.
Затем снова вернуться в окно проектов, и щелкнув правой кнопкой мыши на ветви другие файлы (Other Files) вызвать меню и выбрать пункт добавить файл (Add File), найти файл 8535def.inc и подключить его к проекту. Необходимо отметить, что этот файл должен находится в той же папке, что и asm файл, который создается, поэтому его лучше скопировать заранее, иначе это вызовет ошибку компиляции. Если все сделано правильно, то окно проектов должно выглядеть следующим образом:
Теперь щелкаем два раза на asm файле и в открывшемся окне набираем программу. После того как программа набрана, нажимаем F7 и производим её компиляцию, при этом создается файл с расширением hex, который затем надо будет записать в микроконтроллер. После компиляции появится окно Project Output, в котором указано, какой файл ассемблируется, используемый файл библиотеки, количество слов в программе и сообщение об отсутствии ошибок Assembly complete with no errors. Если есть ошибки, то в этом окне указывается тип ошибки, номер строки с ошибкой и в конце общее число ошибок. Для их исправления необходимо вернутся к редактируемому файлу и их исправить, а затем снова откомпилировать программу.
AvrStudio позволяет не только компилировать программы но и отлаживать их на этапе разработки. При этом AvrStudio эмулирует работу микроконтроллера, всех портов ввода/вывода, счетчиков/таймеров, прерываний, ШИМ и АЦП. Эмуляция работы программы позволяет рассмотреть её работу, как если бы она была записана в микроконтроллер.
Необходимо отметить, что эмулировать работу можно только программы, не содержащие ошибок. Поэтому перед эмуляцией AvrStudio произведет компиляцию программы и если есть ошибки то эмулировать (отладить) программу не удастся.
Для отладки программы, после того как она написана, нужно в меню Project выбрать пункт Build and run или нажать Ctrl + F7. Появится окно опции эмулятора (Simulation Options). В пункте устройство (Device) нужно выбрать микроконтроллер AT90S8535, в пункте частота (Frequency), частоту 8 МГц, нажать кнопку OK.
После этого появится окно, в котором набиралась программа, но начало программы будет отмечено желтой стрелкой – это начало программы, выше идут директивы компилятора. При эмуляции работы программы необходимо видеть состояния регистров, портов ввода/вывода, процессора. В главном меню программы выбираем пункт просмотр (View), затем пункт регистры (Registers), далее пункты процессор(Processor), просмотр ввода/вывода (New IO View). В меню View имеются и другие пункты, которые можно использовать, но в данном руководстве не рассматриваются. Для наблюдения работы микроконтроллера в большинстве случаев достаточно только этих окон. Таким образом после всех этих действий получится окно примерно такого вида:
Теперь можно приступить к запуску программы. AvrStudio позволяет запустить программу в реальном времени, в пошаговом режиме, до указателя. В главном меню в пункте отладка (Debug), находятся все варианты запуска программы.Reset – сброс на начало программы (желтая стрелка указателя показывает на начало),Go – запуск в реальном времени (программа будет выполнятся до тех пор пока не будет выбран пункт Break), Step over – пошаговый режим (программа выполняется построчно, при этом останавливается после каждой команды, стрелка указывает на текущую команду), Run to cursor – выполнять до курсора (программа выполняется до места отмеченного курсором в окне с редактируемой программой). Во время выполнения программы можно наблюдать за состоянием регистров после каждой команды, тем самым проверяется правильность операций, производимых микроконтроллером. Наиболее удобный режим для этого – пошаговый.
Содержание окон для наблюдения процессов в микроконтроллере в основном понятно, необходимо пояснить содержание окна IO, в котором показаны все устройства микроконтроллера. Напротив каждого устройства стоит знак «+», щелкнув на нем мышкой, получаем содержимое этого устройства, т.е. состояние управляющих регистров, регистров данных и т.д. Два раза щелкнув на содержание, какого-нибудь регистра можно изменить его состояние в процессе выполнения программы. В регистре портов ввода/вывода можно задать входные сигналы, отмечая галочкой в нужном бите состояния логической единицы, тем самым эмулируется воздействие внешних сигналов.
В данном руководстве не преследуется цель описать все возможности программы AvrStudio, остальное изучается пользователем в процессе работы с программой.
AvrStudio позволяет записывать программу в микроконтроллер, но в стенде используется несколько другая схема программатора, поэтому использовать эту возможность программы нельзя.
Для записи программы в микроконтроллер используется программа New_SP. Для запуска программы запустите new_sp.exe.
В нижней части окна программы установить номер порта COM2, нажать кнопку Start. Если порт установлен, нижняя часть окна станет зеленой. Затем в окнах с полосами прокрутки выбрать диск, каталог, и имя записываемого файла с расширением .hех. Для записи программы нажать кнопку Write Flash. Программа записывается в микроконтроллер и в верхнем окне выводится тип микроконтроллера и имя записываемого файла. Если запись невозможна, не выбран hex файл или нет соединения с микроконтроллером, программа выводит сообщение Nothing to do for sp.