Написание программы
Текст программы можно набирать в любом текстовом редакторе, такие как встроенный редактор 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).
Рис. 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, осуществляется включением составных частей ПЭВМ и нажатием кнопки включения на блоке питания комплекса БП. Номер рабочего места устанавливается переключателем внутри блока управления и должен совпадать с номером на блоке связи с ЭВМ.
Переключатель режима работы платы ЖКИ рабочего места необходимо поставить в положение “Программирование”. При нажатии на кнопку “Сброс” блока управления на ЖКИ появляется надпись “Место” с соответствующим номером. Этому номеру будет соответствовать окно на экране дисплея ПЭВМ.
Программное обеспечение располагается в каталоге 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.
Студент оценивает, как нужно исправить ошибку, нажимает вновь на клавишу F6 и возвращается в режим редактирования. Курсор стоит на строке с ошибкой. Студент исправляет ошибку и вновь нажимает клавишу F6. Опять высвечивается та же строка, но уже с исправлениями, однако сообщение об ошибке сохраняется. Это сообщение об ошибке будет устранено потом при компиляции исправленной программы, разумеется, если исправление сделано правильно. Для перехода к следующей ошибке нужно нажать клавишу курсора . Появляется очередная строка с ошибкой. Анализируется ошибка этой строки, принимается решение об её устранении, нажимается вновь клавиша F6. Курсор указывает строку с ошибкой. После устранения ошибки вновь нажимается клавиша F6 и клавиша курсора для выявления очередной ошибки и т.д. После устранения последней ошибки нажатие клавиши курсора не приводит к очередному переводу.
После исправления всех ошибок студент с помощью преподавателя осуществляет компиляцию программы. Если ошибки устранены неправильно и они есть в программе, нажимается клавиша ESC клавиатуры преподавателя и студент вновь на своем месте устраняет ошибки. Если же ошибок нет, то можно приступить к записи программы в микроконтроллер.
Запись программы в микроконтроллер
Для записи программы в микроконтроллер по «подсказке», появляющейся на экране монитора после завершения компиляции, нажимается клавиша 1. Появляется надпись «Прошивка контроллера. Нажмите любую клавишу.»
После этого необходимо выполнить следующие операции:
– переключатель «Выбор рабочего места» блока связи с ПЭВМ нужно поставить в положение рабочего места студента;
– переключатель «Запись – Работа» блока связи с ЭВМ поставить в положение «Запись»;
– нажать любую клавишу клавиатуры преподавателя;
– по светодиодам блока связи с ЭВМ, контролирующим работу последовательного порта SPI, убедиться в наличии записи;
– при появлении сообщения «Запись окончена!!! Нажмите любую клавишу» нажать любую клавишу;
– при появлении восьмиоконного режима работы монитора переключатель «Запись – Работа» поставить в положение «Работа».
Пока переключатель «Запись – Работа» находится в положении «Запись» связь остальных рабочих мест с ПЭВМ, так же как и при компиляции, прерывается.
Проверка функционирования программы
Проверка правильности функционирования подготовленной и записанной в микроконтроллер программы своего варианта задачи студент проверяет на рабочем месте. При этой проверке связь рабочего места с ПЭВМ не нужна. Требуется только питание блока управления рабочего места, подаваемое от БП через БС по кабелю рабочего места.
После нажатия на кнопку «Сброс» начинается выполнение программы с нулевого адреса. Кнопками и тумблерами, в зависимости от запрограммированной задачи, даются необходимые команды и визуально контролируется работа программы.
Если в работе обнаружены отклонения от данной последовательности, то студент вносит необходимые коррективы в свою программу. Вновь повторяются процедуры компиляции, исправления возможных ошибок, записи программы в микроконтроллер и проверка функционирования программы. Лабораторная работа выполнена, если программа выполняет все заданные функции.
Вывод на печать программы и её листинга
Распечатки программы и её листинга являются частью отчетных материалов по работе. Для вывода программы и её листинга на печать необходимо выполнить следующее:
– одновременно нажать клавишу ALT и клавишу цифры номера рабочего места. На экране монитора выделяется необходимое окно;
– нажать клавишу F4. Вводится режим редактирования;
– нажать клавишу F9. Вводится режим компиляции;
– в появившемся после компиляции на экране монитора «меню», выбрать и нажать клавишу с цифрой 3 для печати программы или клавишу с цифрой 4 для печати листинга;
– далее, следуя подсказке на экране монитора, дать команду на работу принтера;
– для выхода после печати монитора в восьмиоконный режим работы нажать клавишу ESC.
Программа на языке ассемблера выводится на печать в том виде, в котором она хранится в ПЭВМ. При выводе на печать листинга программы следует учитывать следующее. Фирменная программа вывода листинга, даже для короткой программы выводит листинг на нескольких страницах формата А4. В нем отражается состояние портов, всех регистров и тому подобное. Вывод такого листинга «напрасный» перевод бумаги и времени при проведении лабораторных работ. Предусмотрена возможность вывода «укороченного» листинга, который выводится при наличии в программе ошибок. Этот листинг полезен для анализа ошибок и их последующего устранения.
Короче, если даётся команда на вывод листинга программы, в которой отсутствуют ошибки, то листинг выводится в полном объеме на нескольких листах, если же в программе есть ошибки, то выводится укороченный листинг.
Следует учесть, что при печати программы и её листинга ПЭВМ отключена от остальных рабочих мест. Это уже не те несколько десятков секунд, которые требуются для компиляции и записи программы в микроконтроллер. Время печати определяется объемом программы и используемым принтером. Поэтому решение, что и когда выводить на печать, принимает преподаватель.
Это является неизбежным недостатком комплекса, использующим одну ПЭВМ на несколько (до восьми) рабочих мест, по сравнению с идеальным случаем «Одна ПЭВМ – одно рабочее место».
Работа с виртуальным объектом автоматизации
Подготовленная дома программа управления виртуальным объектом вводится в ПЭВМ, компилируется и записывается в микроконтроллер рабочего места как описано в предыдущих пунктах.
Для демонстрации работы виртуального объекта при управлении от микроконтроллера по подготовленной программе необходимо проделать следующее:
– кабель рабочего места подключить к специальному разъему «Управление виртуальным объектом» БС;
– переключатель «Выбор режима работы» БС поставить в положение «Управление объектом». На блоках управления рабочих мест загорается светодиод «Запрет обмена»:
– одновременным нажатием клавиш ALT и X клавиатуры преподавателя обеспечить выход из восьмиоконного режима монитора, в подкаталог SERVER;
– выйти из подкаталога SERVER и войти в подкаталог PK&MK;
– в подкаталоге PK&MK выбрать и запустить файл pk&mk.exe или запустить его через ярлык на рабочем столе;
– в появившемся окне с заголовком PK&MK выбрать пункт «Меню», а в появившемся контекстном меню – «Выбор виртуального объекта». На экран выводится меню виртуальных объектов;
– перемещением курсора отметить выбранный виртуальный объект. На экране появится изображение виртуального объекта;
– убедиться, что механизмы объекта находятся в исходных положениях, предусмотренных в подготовленной программе. При наличии несоответствия положений механизмов требуемым положениям, необходимо в нижней области экрана монитора ПЭВМ, названной условно «Область выбора режима и ручного управления», мышью выбрать режим управления «Ручной без контроллера». Воздействуя левой и правой кнопками мыши на изображения командоаппаратов (изменяется направление и скорость соответствующих механизмов объекта) и на изображения тумблеров, установить механизмы объекта в необходимые положения;
– мышью установить режим управления объектом «От контроллера». Осуществляется перевод объекта на управление с рабочего места комплекса. Нажать кнопку «Сброс» БУ. Должен возникнуть обмен между ПЭВМ и микроконтроллером. Наличие обмена можно визуально наблюдать по светодиодам UART на лицевой панели БС. Подпрограмма обмена микроконтроллера с ПЭВМ для всех виртуальных объектов одинакова. По желанию программиста эта подпрограмма может быть дополнена командами управления светодиодами БУ. Например, выбранный светодиод БУ включается в начале обмена (при входе в подпрограмму обмена) и выключается после его завершения (при выходе из подпрограммы). Мигание этого светодиода подтверждает дополнительно наличие обмена;
– при отсутствии обмена между микроконтроллером и ПЭВМ нужно вернуться в режим редактирования программы. Для этого следует в строке меню выбрать пункт «Меню», а в появившемся контекстном меню – пункт «Выход». Войти, как указано в пункте 1.5.4, в восьмиоконный режим работы монитора. Переключатель «Выбор режима работы» БС поставить в положение «Программирование», а переключатель «Выбор режима» – в положение «Работа». Восстанавливается связь всех рабочих мест с ПЭВМ. Кабель используемого рабочего места вставить в гнездо рабочих мест. Найдите в программе причину отсутствия обмена между микроконтроллером и ПЭВМ. После компиляции программы и записи ее в микроконтроллер вновь приступайте к процедурам управления виртуальным объектом;
– при наличии обмена информацией между микроконтроллером и ПЭВМ, подавая с кнопок (тумблеров) БУ необходимые команды, наблюдайте работу механизмов объекта;
– при несоответствии работы механизмов объекта заданию вновь нужно вернуться в режим редактирования (описано выше) и внести коррективы в программу;
– работа завершена, если механизмы объекта работают в полном соответствии с заданием.
Программное обеспечение управления виртуальными объектами обеспечивает вывод на экран монитора циклограмм работы их систем автоматизации.
Циклограммы начинают записываться в память ПЭВМ автоматически при выборе любого виртуального объекта.
Так как время записи циклограмм ограниченно, может возникнуть необходимость записи с более позднего момента времени, нежели включение объекта. Для этого следует в строке меню выбрать мышью пункт «Циклограммы», а в появившемся контекстном меню – пункт «Начать запись с этого момента».
Для просмотра циклограмм следует вновь выбрать в строке меню пункт «Циклограммы», а в контекстном меню – пункт «Показать». На экран выводятся циклограммы с изображением как входных (Х0…Х17), так и выходных (Y0…Y17) сигналов и команд.
Для того чтобы вывести циклограммы с экрана на печать (или добавить в оформляемый отчет по лабораторной работе) необходимо найти интересующий отрезок времени на циклограмме с помощью линейки прокрутки, находящейся в нижней части экрана ПЭВМ. Затем нажать клавишу «Print Screen» на клавиатуре ПЭВМ. Запустить текстовый редактор Microsoft Word (Пуск; Программы; Microsoft Word), выбрать в меню пункт «Правка», а в появившемся контекстном меню пункт «Вставить». На белом поле редактора должен появиться рисунок с диаграммами. Если необходимо, можно добавить комментарии. Выберите в меню пункт «Файл», а в появившемся контекстном меню пункт «Печать».
Выход из программы работы с циклограммами обеспечивается нажатием закрывающей кнопки окна циклограмм.
Для расшифровки циклограмм в контекстном меню пункта «Помощь» программы PK&MK предусмотрен режим «Таблицы соответствия сигналов». При выборе этого режима на экран выводятся таблицы соответствия обозначений Yi и Xi их функциональным обозначениям на изображении виртуального объекта.
Движение механизмов виртуальных объектов может сопровождаться звуком. Для этого в меню «Настройки» предусмотрен пункт «Звук». Движение механизмов со звуком включается щелчком левой кнопкой мыши по этому пункту контекстного меню. Повторный такой щелчок отключает звук.
В меню «Настройки» предусмотрен режим «Настройки COM порта», в котором можно выбрать COM порт и скорость обмена с микроконтроллером. При работе с лабораторным комплексом предусмотрена скорость обмена 9600 bit/s.
В этом же меню «Настройки» предусмотрен режим «Тест СОМ порта», который в рассматриваемом комплексе не используется. Он предусмотрен для работы программы виртуальных объектов с промышленными программируемыми контроллерами.
При управлении виртуальными объектами экран монитора большую часть времени занят изображением виртуального объекта, связь рабочих мест с ПЭВМ (кроме одного, которое управляет виртуальным объектом) прерывается. Поэтому реально в этом случае одновременно могут работать не более двух рабочих мест. Это следует учесть при организации проведения лабораторных работ.
Работа комплекса в режиме «Одна ПЭВМ – одно рабочее место»
Лабораторный комплекс может использоваться не только для проведения лабораторных работ со студентами. Можно его использовать для решения реальных задач (производственных), требующих подготовки и записи программы в микроконтроллеры 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.
Сбои в лабораторном комплексе и их устранение
Основным сбоем в работе лабораторного комплекса является отсутствие связи ПЭВМ с рабочими местами. Об этом на рабочем месте сигнализирует загорание красного светодиода "Запрет обмена" блока управления.
Если появился сигнал "Запрет обмена", а нужно осуществлять набор и редактирование программы, то для восстановления связи с ПЭВМ необходимо проверить следующее:
– убедиться, что переключатель режима работы блока связи с ПЭВМ стоит в положении "Программирование";
– убедиться, что на рабочих местах переключатели режима работы стоят в положении "Программирование";
– убедиться, что кабель "Порт COM2 – блок связи с ЭВМ" подключен правильно;
Если все указанные переключатели стоят в требуемых положениях и подключен порт COM2 к блоку связи с ЭВМ, но по-прежнему нет связи рабочих мест с ПЭВМ, то следует выключить питание всех элементов комплекса. Затем включить блок питания лабораторного комплекса. Нажимая последовательно на каждом рабочем месте кнопку "Сброс" блока управления, убедиться что нет рабочих мест с одинаковыми номерами. На всех блоках управления горят светодиоды "Запрет обмена". Включить питание ПЭВМ. В подкаталоге SERVER запустить файл server.bat и обеспечить восьмиоконный режим работы монитора, светодиоды "Запрет обмена" на блоках управления рабочих мест должны погаснуть.
Если описанные действия не дают положительного результата, то следует отключить все кабели рабочих мест от блока связи с ЭВМ. Подключить к блоку связи кабель одного рабочего места. Проверить есть ли связь с ПЭВМ этого единственного места. Если нет, то, возможно, что неисправен кабель этого рабочего места. Отключить его и аналогично, подключая кабели других рабочих мест к блоку связи с ЭВМ, проверить исправность их кабелей. Неисправность кабеля хотя бы одного рабочего места приводит к отсутствию связи рабочих мест с ПЭВМ. Если же все блоки управления ведут себя одинаково, то причина не в кабелях рабочих мест.
Возможна неисправность кабеля "Порт COM2 - блок связи с ЭВМ". Проверьте его исправность и надежность контактов в его разъемах. Следующей причиной отсутствия связи может быть выход из строя элемента MAX232 мультиплексорного блока в блоке связи с ЭВМ. Он установлен на контактной панельке. Замените этот элемент.
Если обмен с ПЭВМ есть, но какое-то рабочее место ведет себя неадекватно, например, при нажатии кнопки "Сброс" появляется номер рабочего места не в левом верхнем углу ЖКИ, а где-то в середине, то, не отключая питание комплекса, отключите и включите вновь кабель блока управления этого рабочего места. Нажмите кнопку "Сброс" этого рабочего места. Номер рабочего места должен высвечиваться на положенном ему месте. Иногда эту операцию нужно повторить несколько раз, или при отключении рабочего места подождать несколько секунд и подключить его.