Сайт по программированию микроконтроллеров

Удобный змулятор для работы процессоров лежит на казусе

Описания можно взять здесь и здесь

ГЛАВА 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   элементов .

 

              панель управления отладкой   выглядит как магнитофонная  и работает так же:

                            пуск , пауза/пошаговый режим ,пауза ,стоп ( разве только перемоток нет).

 

             панель статуса проекта  в ней отображаются подсказки ,ошибки ,время и т.д. ,подробней позже.

 

   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 г.

 

 

 

Hosted by uCoz

Этот сайт создан при помощи программы Globus SiteBuilder
Этот сайт создан при помощи программы Globus SiteBuilder
Hosted by uCoz