Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Лабораторная работа 2. Изучение среды MPLAB и порта С





Цель работы: изучить среду MPLAB, изучить технику управления портами микроконтроллера и инструкции установки отдельных бит в регистрах.

Задания для внеаудиторной подготовки:

- познакомьтесь с описанием УМК-7 и MPLAB по приложению А;

- познакомьтесь по приложению Б с битами RP1 и RP0 (5 и 6 разряды) регистра status. Эти биты определяют номер банка, с регистрами которого будет работать программа;

- познакомьтесь с картой памяти PIC по приложению Б;

- познакомьтесь по приложению Г с инструкциями микроконтроллера PIC, примененными в приведенных ниже программах: CLRF, BSF, MOVLW, MOVWF, GOTO;

- познакомьтесь с регистрами PORTC и TRISC и их размещением в банках. Запомните, что эти регистры находятся в разных банках;

- изучите приведенный ниже образец программы в качестве аналога для написания программы к вашему варианту.

Если в регистре TRISC записаны все нули (регистр очищен), то порт C работает только на вывод. В этом случае подаваемое на внутренние клеммы порта C напряжение(сигнал ‘1’), поступит на выходные клеммы и светодиоды начнут светиться. Однако подаваемое на внешние клеммы напряжение (сигнал ‘1’) не поступит в микроконтроллер. Если записать все единицы в регистр TRISC, то подаваемое на внутренние клеммы порта C напряжение(сигнал ‘1’), не поступит на выходные клеммы и светодиоды не будут светиться. Теперь подаваемое на внешние клеммы напряжение (сигнал ‘1’) поступит в микроконтроллер и его можно использовать в программе. Часто часть разрядов порта С настраивают на ввод и часть на вывод.

Ниже приведен текст программы, зажигающей по очереди справа налево светодиоды по заданному двоичному числу В’01010011’. Инструкция CLRF- Очистить регистр означает, что в регистр будут записаны все нули, т.е. все биты сброшены. Последнее не относится к регистру Status, после очистки он имеет значение 00011111. Исполняемая часть программы обычно начинается с очистки регистра Status. В 5 и 6 разряды записываются нули, что соответствует выбору нулевого банка.

В любой регистр нельзя непосредственно записать какое - либо число (константу). Сначала константу по инструкции MOVLW записывают в регистр-аккумулятор W, затем по инструкции MOVWF переписывают ее в требуемый регистр. В программе задействован регистр TRISC, находящийся в первом банке. Остальные регистры находятся в нулевом банке. После точки с запятой в программе напечатаны комментарии, которые не воспринимаются ассемблером.

Программа 2.1. В программе выполнено последовательное подключение потребителей, подключенных к фидерам 0, 1, 4, 6 с пульта диспетчера. Светодиоды имитируют нагрузки.

include<p16F877.inc>; Обязательная строка.

org 0; Код, следующий за этим выражением, начинается с нулевого
; адреса электрически программируемого постоянного; запоминающего; устройства (ЭППЗУ).

nop; Пустая инструкция, необходимая для работы отладчика.

nop

nop

org 05; Код, следующий за этим выражением, начинается с 5-го адреса
; ЭППЗУ (метка START).

START; Метка начала программы.

CLRF STATUS; Очищаем регистр status и выбираем банк ‘0’.

BSF STATUS, 5; Записав в 5-й разряд 1, выбираем первый банк.

CLRF TRISC; Обнуляем TRISC и настраиваем PORTC на вывод.

CLRF STATUS; Возвращаемся в нулевой банк.

LOOP; Метка для цикла (повторения инструкций).

CLRF PORTC; Выключаем светодиоды, если они горели.

MOVLW B'00000001'; Пересылаем в регистр W число В’00000001’.

MOVWF PORTC; Пересылаем число из W в PORTC, зажигаем
; первый светодиод, который подключен к нулевому разряду.

MOVLW B'00000010'; Пересылаем в регистр W число В’00000010’.

MOVWF PORTC; Пересылаем число из W в PORTC, зажигаем
; второй светодиод, который подключен к первому разряду.

MOVLW B'00010000'; Пересылаем в регистр W число 01h.

MOVWF PORTC; Зажигаем светодиоды, переслав значение W.

MOVLW B'01000000'; Пересылаем в регистр W число 40h.

MOVWF PORTC; Зажигаем светодиоды.

GOTO LOOP; Переходим на метку LOOP для повторения.

END; Конец программы.

На основе образца напишите на бумаге текст для своего варианта.

Т а б л и ц а 2.1 – Варианты заданий

Вариант Заданные значения Вариант Заданные значения
       
       
       
       
       

Выполнение программы на УМК-7

Запустите MPLAB двойным щелчком мыши по соответствующей иконке на рабочем столе. Напечатайте в окне редактора программу 2.1. При наборе текста программы применяйте регистр букв такой же, как в образце. С первой позиции печатаются метки, с шестой позиции печатаются инструкции.

Сохраните программу с именем, имеющим для вас смысл, с расширением. asm (в примере tut877.asm) в папке program.

Чтобы заставить работать вашу программу, нужно её скомпилировать. Грубо говоря, перевести текст программы в инструкции микроконтроллера в двоичной форме. Для этого необходимо:

- если есть открытый проект, закрыть его командами Project – Close Project в основном меню MPLAB;

- создать новый проект командами Project – New Project;

-

 
 


указать папку для размещения нового проекта, и затем ввести имя проекта, такое же, как у программы.

Выполняемые далее действия приводятся для проекта с именем tut877.pjt. В диалоговом окне New Project (рисунок 2.1) нажмите кнопку OK.

 

 

Должно открыться диалоговое окно редактирования проекта Edit Project, показанное на рисунке 2.2.

Обратите внимание на строку Development Mode. Она показывает тот Development Mode и тот процессор, с которым работали с последний раз в MPLAB-IDE до вас. Для нас там должна быть строка “ MPLAB-ICD Debugger”. Если необходимо изменить этот параметр, нажмите кнопку Change. Откроется диалоговое окно Development Mode, показанное на рисунке 2.3. Выберите строку MPLAB-ICD Debugger. Далеенажмите кнопки Apply и OK и вы вернетесь в окно Edit Project.

 
 


Выделите строку tut877 [.hex] в области Project Files в диалоговом окне Edit Project и затем нажмите кнопку Add Node. В диалоговом окне Add Node выберите файл tut877.asm и затем нажмите кнопку OK. Вы вновь вернетесь в окно Edit Project.

Ассемблер MPASM всегда создает файл с расширением .hex, скомпилированный из asm- файла с тем же именем, что и исходный asm- файл. Менеджер проекта (Project Manager) создаст файл tut877.hex, при формировании проекта (Built Project). Нажав OK, закройте окно Edit Project.

 
 


Готовый проект следует сохранить командами Project - Save Project. Теперь командами Project - Make Project выполните компиляцию приложения, используя MPASM. Окно Build Results покажет результат компиляции и отметит ошибки, если они есть. Если в последней строке будет написана фраза “Build completed successfully”, как показано на рисунке 2.4, то компиляция проведена успешно. В случае неудачи щелкните 2 раза в окне Build Results на строку, в которой описана ошибка, и вы вернетесь в текст программы на строку, содержащую ошибку. Исправьте текст программы. Повторно выполните команды Project - Save Project и Project - Make Project для компиляции. Устраните таким образом все ошибки.

Устранив все ошибки, запрограммируйте кристалл, нажав в окне MPLAB-ICD кнопку Program (рисунок 2.5). Если это окно отсутствует, закройте и снова откройте созданный вами проект. Если эти действия не помогут, исправьте установки Development Mode командами Options - Development Mode – MPLAB ICD Debugger. Программирование кристалла может занять пару минут, в течение которых в поле Status показывается процесс выполнения. После завершения программирования в поле Status отображается сообщение “Waiting for user command” - “Ожидание команды пользователя”.

Запустите на выполнение программу в пошаговом режиме командами Debug – Run - Step. Следите за результатами выполнения инструкций по светодиодам.

Если пошаговое выполнение программы застряло на какой - либо строке и не продолжается дальше, выполните команду Debug – Clear all points.

Остановите выполнение программы командами Run - Reset. (Команда Halt просто приостанавливает выполнение программы и после команд Debug – Run- Step выполнение программы продолжится с места останова).

При необходимости исправьте программу и включите ее в отчет по лабораторной работе. Можно скопировать текст в Блокнот.

Повторно запустите программу в автоматическом режиме. Объясните, почему светятся все светодиоды одновременно, а не мигают по очереди.

Вывод. Можно управлять выводом информации в PORTC цифровым методом. Выводимая информация может управлять технологическим процессом, включая разные механизмы, подключенные к порту C.

Контрольные вопросы

1. Расскажите какую реальную задачу решает ваша программа.

2. Можно ли на вход микроконтроллера подавать аналоговый сигнал?

3. Что выполняет инструкция CLRF?

4. Что выполняет инструкция MOVLW?

5. Что выполняет инструкция MOVWF?

6. Что выполняет инструкция MOVF?

7. Что выполняет инструкция BSF?

8. Что выполняет инструкция GOTO?

9. Какие внешние устройства расположены на панели стенда?

10. Объясните, почему светятся все светодиоды одновременно в автоматическом режиме выполнения программы?

 

Date: 2015-05-09; view: 1072; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию