Удобный
змулятор для работы процессоров лежит на казусе
Описания
можно взять здесь и здесь
ГЛАВА 1
Убедимся для начала ,что программа установлена в папку по
умолчанию C:\Program Files\Labcenter Electronics\Proteus 6 Demonstration .
Иные пути установки мной не проверялись ,и варианты когда PROTEUS 6.5 SP5
установлен на систему стоящей на диске D то же.
И так программа установлена , ярлык выведен на рабочий стол.
Кликаем по ярлыку .Если все в порядке (с компьютером
и мозгами) появиться основное окно программы.
Вот его основные элементы.
1 окно редактирования Editing
Window в нем происходит основная сборка и
отладка схемы устройства.
2 окно навигации и предпросмотра элементов Overview
Window с помощью его можно
перемещаться по схеме
или же предварительно перед
размещением вращать элементы .
3 окно
выбора элементов Object Selector здесь
надеюсь понятно назначение .
4 панель инструментов
и устройств она разделена на три группы ,но об
этом позже
5 панель вращения и зеркального отображения Rotation Reflection элементов
.
6 панель управления отладкой выглядит
как магнитофонная и работает так же:
пуск , пауза/пошаговый режим ,пауза ,стоп ( разве
только перемоток нет).
7 панель статуса
проекта в ней отображаются подсказки ,ошибки ,время и т.д.
,подробней позже.
8 окно координат курсора
отображаются в дюймах, что не очень то и удобно.
9 панель блочных операций с выделенными
обьектами копирование , перемещение и удаление
10 эта
панель нужна при создании своих элементов об этой панели и о других
,оставшихся элементах
в ближайщем (если хватит времени и терпения) будущем.
Начинаем ! Очистим окно редактирования (создадим новый
дизайн) меню FILE>NEW DESIGN. Или нажать соответствующую
пиктограмму . При старте программы автоматически создается новый дизайн.
Соберем небольшую схемку ,по традиции ,с мигающим
светодиодом .Где RA0 выход PIC16F84A.
Нам нужны PIC16F84A 1 штука , резистор 1 кОм 1 штука , светодиод красный
1 штука.
Кварц и конденсаторы для него и для блока питания не
нужны .
Для этого нам с начала нужно набрать .как на складе
,необходимые элементы.
Что бы попасть на этот «склад» убедитесь что у вас выбран
режим компонентов Component.
Нажмем Pick Devices выбрать
устройство
Теперь мы находимся на «складе» :
1
окно выбора по категории
2
окно выбора по подкатегории
3
выбор по производителю
4
окно предпросмотра устройства (схематики),заодно можно увидеть имеется ли
модель интерактивной симуляции для данного
устройства (будет ли устройство работать в
отладчике)
5
окно предпросмотра корпуса элемента ( для последущей передачи проекта(дизайна)
в трассировщик ARES.
6 окно
выбора имеющихся устройств
7
поиск по ключевым словам
И так выбираем нужный нам PIC16F84A : дважды щелкаем левой
кнопкой по строке с наименованием.
Устройство появится в списке.
Таким же образом выбираем в категории Resistors элемент RES резистор
, а в категории Optoelectronics LED-RED светодиод.
Закрываем «склад» нажав в окне OK или же закрыв окно.
Если вы все сделали правильно, в окне выбора устройств
появятся список набранных нами деталей.
Щелкнем левой кнопкой в этом окне по PICF84A. Изображение микропроцессора появится в окне предпросмотра.
С помощью этих кнопок мы можем предварительно вращать и
переворачивать вокруг своей оси изображение
устройства для правильной ориентации в схеме.
Так , мы выбрали устройство(в окне предпросмотра изображение
устройства) соориентировали его.
Теперь можно разместить в окне редактирования. Просто
щелкаем левой кнопкой где нам нужно.
Появилось изображение процессора.
Чтобы переместить устройство нужно сначала выделить его
щелкнув правой кнопкой по нему затем щелкнув левой
и удерживая ее перетащить куда нужно. Выделенное устройство
подсвечивается красным.
Выделить устройство или группу можно протащив по ним
удерживая правую кнопку,
область выделения .С выделенной группой доступны блочные
операции, перемещения ,копирования и удаления.
Для того чтобы приблизить или отдалить схему вращайте колесо
мыши или же кнопки F6 и F7
соответственно.
Для перемещения по схеме ,если схема не умещается в окне
редактирования щелкайте по окну навигации ,или же
Удерживая SHIFT перемещайте
мышку не нажимая на ней кнопок.
Разместите остальные компоненты как вам нужно.
Должно получиться что то типа этого.
Теперь нам надо соединить детали между собой, иначе это не
схема а набор деталей.
Подводим курсор к выводу RA0 .Курсор
изменится на стрелку с крестиком .Щелкаем левой кнопкой и тащим
Курсор к верхнему выводу резистора .За курсором потянется
линия...При наведении на вывод курсор опять изменится.
Щелкаем левой кнопкой .Мы подсоединили резистор к
микроконтроллеру ! И причем без пайки.
Соедините нижний вывод резистора и анод диода сами.
Выводы кварца и сброса можно не подсоединять это
все эмулируется программно . Так же как и выводы питания МК.
Да нужно же еще землю к катоду присоединить ! Выбираем режим
Inter-sheet Terminal межсхемные
соединения.
В появившимся списке выбираем GROUND
земля . Соориентируем и разместим под светодиодом .Соединим землю
с катодом светодиода.
Теперь нужно изменить номинал резистора ,нам нужен 1ком .
Щелкаем сначала правой затем левой кнопками мыши по
резистору.
Открываем окно свойств элемента .И вносим 1k то есть 1 ком.
Жмем OK .
Таким же образом изменим ток светодиода на 2mA .
Теперь сохраните проект ,в отдельной папке ,под именем
LED.DSN.
ГЛАВА 2
Попробуем оживить схему .Для этого нам необходим файл
исходник . Среда PROTEUS поддерживает
много средств разработки
Среди них и HI-TECH Си компилятор и СROWHILL PIC BASIC и BASIC STAMP . Мы
воспользуемся ассемблером MPASM .
В поставку PROTEUS входят
компиляторы MPASM и MPASMWIN от MICROCHIP но они старые , так что придется заменить на новые.
Желательно от MPLAB
версии 6.30 . В 6.50 уже нет MPASM . Я пользуюсь
MPASM потому что MPASMWIN не поддерживает пути
Длинней 62 символа .Но MPASM , и возможно MPASMWIN , поддерживают формат имени файла 8.3 .Так что будьте
внимательны.
НУ,С начнем.
Вот он ,исходник . Скопируйте текст в буфер обмена .Вставьте
в каком нибудь текстовом редакторе в новый файл .Я пользуюсь
редактором MED (очень
удобный).Сохраните ,в папку с нашим проектом, под именем LED.asm.
list p=16f84 ; processor
type
;
; The purpose of this
program is to make a LED turn on and off
; The LED is connected to
PortA pin RA0
; The flash rate is 500mS
;
PortA
equ 0x05
; PortA RAM address
LED
equ 0x00
; PortA RA0 = bit 0 for LED
TrisA
equ 0x85
; TRISA RAM address
TrisB
equ 0x86
; TRISB RAM address
Status
equ 0x03
; Status RAM address
RP0
equ 0x05
; Status RP0 bit = bit 5
DelayL
equ 0x20
; delay register LOW byte
DelayM
equ 0x21
; delay register MID byte
DelayH
equ 0x22
; delay register HIGH byte
;
; -------------
; PROGRAM START
; -------------
;
org 0h ; startup address = 0000
clrf DelayL
clrf DelayM
clrf DelayH
clrf PortA
bsf Status,RP0 ; set RP0 for RAM page 1
clrf TrisA ; all PortA = outputs
clrf TrisB ; all PortB = outputs
bcf Status,RP0 ; set RP0 for RAM page 0
start
bsf PortA,LED ; turn on LED on RA0
call Delay500 ; execute a 500mS delay
bcf PortA,LED ; turn off LED on RA0
call Delay500 ; execute a 500mS delay
goto start ; do this loop forever
;
; --------------------------------
; SUBROUTINE: waste time for
500mS
;
--------------------------------
;
Delay500
clrf DelayL ; /R clear DelayL to 0
clrf DelayM ; clear DelayM to 0
movlw 3h ; set DelayH to 3
movwf DelayH
Wait1
decfsz DelayL ; subtract 1 from
DelayL
goto Wait1 ; if not 0, goto Wait1
decfsz DelayM ; subtract 1 from DelayM
goto Wait1 ; if not 0, goto Wait1
decfsz DelayH ; subtract 1 from DelayH
goto Wait1 ; if not 0, goto Wait1
return ; finished the delay
end
Добавим наш исходник в проект.
Щелкаем меню SOURCE
> ADD/RemoveSource files..
Откроется окно выбора .
1 Щелкаем NEW > находим и открываем наш файл LED.asm
2
Выбираем из списка компилятор.
(3
Если захотите удалить файл из проекта то REMOVE.)
Нажимаем OK.
Соберем проект ,то есть сотворим файл прошивки.
Откроем меню SOURCE >BUILD ALL
(Остальные пункты меню ,как говорится для продвинутых
пользователей и настройки ,в большинстве случаев ,не требуют.)
Ну вот вроде все нормально !
Закроем окно CLOSE.
В нашей папке появились файлы: Нам пока нужен только файл LED.hex . Но
если пойдет что то не так ,стоит просмотреть
LED.err . Ошибок при компиляции не было , но файл не нулевого
размера ,возможно какие ни будь предупреждения
Типа неправильный банк регистров . Просмотреть файл можно
любым текстовым редактором
Щелкаем по микроконтроллеру правой, затем левой кнопкой
мыши.
Откроется окно свойств микроконтроллера.
(Забыл сообщить что исходник делался на кварц 4 МГЦ.)
1
Выставляем частоту кварца.
2
Выбираем наш файл прошивки LED.hex ,он находится в папке с проектом.
Жмем OK.
Проект полностью готов.
Пора сохранить его. По чаще сохраняйтесь!
ГЛАВА 3
Запускаем проект. О
!! Вроде замигал!
Если вам мешают цветные стрелки на проводах или уровни на
выводах ,
и если процессор сильно загружен.То можно выключить эти
опции.
Меню SYSTEM > SET ANIMATION OPTIONS.
Снимаем все галочки.
Ну насмотрелись на свое творение ? Пора приступать к отладке
. Убедимся что проект выключен.
Жмем пауза /пошаговый режим Проект запустился и сразу же
встал.
Должно появиться окно с исходником . Если не появилось тогда
(не выключая проекта!)
меню DEBUG >PIC CPU SOURCE CODE-U1 поставить
галочку.
Ну вот появилось!
1 Выбор
файла отладки .Если было два и более исходника ,один например на си или бэйсике
а второй на ассемблере.
2
Продолжить выполнение программы.
3 Шаг
без входа в подпрограмму
4 Шаг
с входом в подпрограмму
5
Исполнять до возврата из подпрограммы(Фактически остановка происходит на
следующей за RETURN
командой)Использовать естественно находясь в подпрограмме.
6
Исполнять пока не будет достигнута выделенная полосой(курсором)строка .
7
Тригер точек остановки(брейк поинт).т.е. вкл /выкл.
8
Номера строк
9
Регистр PC (Program count)
Щелкаем правой кнопкой по окну .Появится окно свойств.
1
Переход на строку, переход на адрес ,поиск текста.
2 Разрешение
, установка ,запрет ,стирание
точек остановки.
3
Показать/скрыть номера строки , адреса
опкод .
4
Выбор шрифта (кирилица поддерживается),
Выбор цвета.
Для ознакомления с процессом отладки поставьте точку
остановки на строку с номером 0000 .
Их две ,потому что директива ORG определяется то же как команда .Ставим на любую ,на время
остановки это не повлияет.
Убедимся что у нас выбрана опция FIX-UP BREAKPOINTS ON LOAD см. выше.( Зафиксировать точки
остановки при загрузке).
Теперь если мы сначала выключим а затем включим
проект (Вроде как сбросим) программа прервется в точке остановки.
Но ничего интересного нам это не даст ,мы не увидим ни спец
регистров ни регистров пользователя .
Сейчас они появятся !
Убедимся что находимся в режиме паузы то есть жмем или же мы
уже прервались на точке остановки.
Идем меню DEBUG ставим
галочку на PIC CPU REGISTRS-U1.Кстати U1 это номер микросхемы
(микроконтроллера)
То есть в проекте могут быть несколько микроконтроллеров (на
сколько хватит мощности компьютера).
Поставили .Сбросили проект то есть выключили и включили
И прервались на точке остановки .Появилось окно трассировки
вместе с окном регистров .
Теперь можно ,или ставить
точки остановки,
Или же по шагам отлаживать свою программу и следить за
изменением регистров.
Потренировались ? Да не совсем удобно ,и в динамике процесс
не наблюдаем.
Добавим еще одно окно .Окно Watch window. Все так же и там же.
Проект на паузе. Меню DEBUG
> галочку на Watch window.
Смотрим ..
Окно как окно .Пока ничего интересного не видно.
Щелкаем по нему правой кнопкой.
1
Добавление элементов трассировки по имени т.е. спец регистров ,кроме W,по адресу т.е.регистров пользователя.
2
Установка точек остановки при совпадении ,очень полезная вещь .
3 Операции с
элементами просмотра.
(выделение ,
переименование, копирование и
удаление)
4
Формат вывода данных элементов
5 Показать/скрыть
адрес , сетку
6 Выбор
шрифта ,цвета .
Щелкнем по Add items(By Name) . И добавим ,дважды щелкнув по имени ,PORTA
.
Закроем окно нажав DONE .
Все бы хорошо но порт отображается как hex значение.
Мы же представляем его как набор битов ,один из которых RA0 управляет светодиодом.
Выделяем строку с портом щелкнув левой кнопкой.
Затем там же правой.
Выбираем подменю DISPLAY FORMAT > ставим
галку на BINARY .
Теперь снимем все точки останова .И запустим проект.
Это еще не все и не самые главные прелести PROTEUS.
Постараюсь ,если конечно пригодится вам ,продолжить статью .
Просьба не ругаться на орфографию , а помочь в
редактирование.
Максимов Алексей .17 октября 2004 г.