Лабораторная работа № 2. Написание и организация программ на assembler для pic16f87x. Изучение среды mplab. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа № 2. Написание и организация программ на assembler для pic16f87x. Изучение среды mplab.



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

 

2.1 Краткие теоретические сведения и задания для внеаудиторной подготовки

У микроконтроллеров имеются выводы для подключения внешних устройств. Выводы объединены в функциональные группы-регистры РСН: PORTA, PORTB, PORTC, PORTD, PORTE. В процессе выполнения программы на выводы порта либо будет подаваться напряжение от ЦПУ, либо оно будет поступать с внешнего источника. Содержание регистра порта, а также нумерация разрядов порта показана на рисунке 1.1. Наличие напряжения будем обозначать цифрой 1, отсутствие - цифрой 0.

  Рисунок 2.1- Схема регистра   Все выводы регистра нумеруются, начиная с нуля, справа налево, и называются разрядами или битами. Отдельные выводы портов могут быть настроены на ввод или вывод сигнала определенного уровня. К выводам порта могут быть подключены цепи к приборам и устройствам, управляющим технологическим процессом, или идущие к датчикам, с которых вводится аналоговая или цифровая информация.

Представленные на рисунке 2.1 набор нулей и единиц формально считают числом в двоичной системе счисления. Положение цифры в числе называют разрядом

 

Настройка отдельных бит в регистрах PORTA, PORTB, PORTC, PORTD, PORTЕ на ввод или вывод осуществляется через соответствующие биты регистров TRISA, TRISB, TRISC, TRISD, TRISЕ. Если, например, в регистре TRISC записаны все нули в первый полубайт, а во второй полубайт записаны единицы (подана энергия), то в PORTC биты первого полубайтаработают на вывод информации из МК, биты второго полубайта работают на ввод. Если в PORTC будет подана энергия из ЦПУ на все 8 разрядов, то на выходе на стенде УМК-7 включатся только лампы, подключенные к битам 0-3. Выход от защелок бит 4-7 будет заперт [Л.]

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

При включении или сбросе МК выполнение программы начинается с адреса h’00’ памяти программ.

При выборе реального подключаемого оборудования необходимо помнить, что выходное напряжение МК от 3.0 V до 5.5 V постоянного тока.

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

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

- познакомьтесь по приложению Г с битами RP1 и RP0 (5 и 6 разряды) регистра STATUS;

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

- определите в каких банках находятся регистры PORTA, PORTB, PORTC, PORTD, PORTЕ и TRISA, TRISB, TRISC, TRISD, TRISЕ по приложению Б;

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

 

Исходные данные и выполнение программы

 

Задача.Создать программу, поясняющую функции регистров TRIS по настройке разрядов соответствующих портов на ввод или вывод. Программа должна содержать разделы, присущие полноценной программе:

- присвоение имен определенным РОН;

- указания по записи программы в память программ;

- настройка необходимых регистров;

- рабочая часть программы.

Cоединить проводами выводы PORTC с гнездами сигнальных ламп как показано на рисунке 2.2.

 

Рисунок 2.2 – Схема подключения сигнальных ламп на пульте

 

Управление технологическим оборудованием выполняется программой 2.1. Заголовок программы записывается через 5 отступов (одно нажатие Tab). После точки с запятой в программе печатаются комментарии, которые пропускаются компилятором.

 

Программа 2.1:

Include<p16F877А.inc>; подключение библиотеки символьных имен РСН.

; В этой части программы отдельным РОН присваиваются имена, имена;пишут без отступа, далее пробел Tab, пишем EQU(указатель EQU от equal;(англ.) – одинаковый, равносильный), один пробел и адрес РОН

; если нет необходимости в создании именованных РОН, то этой части;нет

Con EQU h'25'

Con1 EQU h'26'

; В этой части пишутся указания по записи созданной программы в память;программ

org h’00’; следующая инструкция (NOP) будет записана в память программ по адресу;h’00’.

nop; инструкция, для работы отладчика будет записана по адресу h’00’.

nop; инструкция будет записана по адресу h’01’ памяти МК.

nop; инструкция будет записана по адресу h’02’ памяти МК.

;Регистр памяти с адресом h'04' зарезервирован для записи имени;программы, которая запускается для обработки появившегося прерывания

org h’05’; дальнейший код будет записан начиная с адреса h’05’

; Инструкции для настройки МК.

CLRF STATUS; очищаем 5,6,7 бит регистра Status и выбираем нулевой;банк.Биты 0-4 после выполнения данной инструкции равны 1. Между;инструкцией CLRF и именем регистра один пробел. Сохранить окно Watch

BSF STATUS,5; записав в 5-й разряд ‘1’ (без пробела после инструкции), выбираем;первый банк.

MOVLW B'11110000'; пересылаем в аккумулятор W число В’11110000’,;соответствующее заданию по настройке выходов порта PORTC

; Настраиваем регистр TRISC в режим, разрешающий вывод энергии из;защелок PORTC на выход в тех разрядах, которые соответствуют заданию

MOVWF TRISC; настраиваем биты 0-3 PORTC на вывод, а биты 4-7 на ввод

BCF STATUS,5; возвращаемся в нулевой банк, в нем будет работать рабочая часть

; Рабочая часть программы

NACH; метка, на которую возвращаемся после выполнения инструкции;GOTO

MOVLW B'11111111'; пересылаем в аккумулятор W число В’11111111’.

MOVWF PORTC; убеждаемся по сигнализации, что зажигаются только;лампочки в 0-4 разрядах в соответствии с настройкой регистра TRISC по;заданию

; сохранить окно

BCF PORTC,0; отключаем лампу по заданию.

; сохранить окно

BSF PORTC,0; включаем лампу по заданию.

MOVLW B'10000001';засылаем второе число по заданию в аккумулятор

MOVWF Con; засылаем эту константу в регистр Con

CLRW;очистка аккумулятора, проверьте в окне Watch

MOVF Con,w; засылаем константу из регистра Con в аккумулятор

; сохранить окно

MOVWF PORTC;остаются гореть только лампы по заданию

; сохранить окно

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

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

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

 

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

             
TRISC            
Бит измен-й            
2-е число            

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

             
TRISC            
Бит измен-й            
2-е число            

Выполнение проекта на УМК-7

 

2.3.1Для написания и частичной отладки программы в режиме симулятора создайте папку на компьютере, на котором Вы работаете в разрещенной на этом компьютере папке. Название папки латинскими буквами по имени Вашей подгруппы.

 

2.3.2 Запустите MPLAB.

Откройте новый лист- File\New

В появившемся диалоговом окне набираем текст Программы 2.1.

Рисунок 2.3 – Окно для ввода текста программы

 

 

Сохраняем файл с помощью File\ Save as (тип файла –Assembly Source Files (*.asm) в ранее созданной Вами папке (пример: Lr2_1. asm). Номер варианта после подчеркивания.

2.3.3 Запускаем мастера по созданию проекта :Project>Project Wizzard

 

2.3.4 В появившемся диалоговом окне нажать кнопку «Далее».

В следующем окне указать тип микроконтроллера PIC16F877A и нажать кнопку «Далее».

 

Рисунок 2.4 – Окно выбора типа микроконтроллера

2.3.5 В следующем окне нажать кнопку «Далее», не изменяя НИКАКИХ параметров.

 

Рисунок 2.5 – В этом окне ничего не вводится

 

2.3.6 После нажатия далее в новом окне (рисунок 2.6) заполните поле Project name(ввести имя проекта - Lr2_1. asm) и в поле Project Directory через Brows выбрать папку, в которой находится сохраненный Вами файл Lr2_1. asm.

Рисунок 2.6 – Окно выбора папки, где сохраняется проект

 

2.3.7 Нажимаем кнопку «Далее».

В следующем окне с помощью кнопки «Add», добавить с левого окна в правое:

- файл P16F877A.INC из Мой компьютер\System C:\Program Files\Microchip\MPASM Suite\ P16F877A.INC с библиотекой инструкций Assembler для P16F877A;

- сохраненный файл Lr2_1.asm

Оба файла отметить значком «флажок».

 

Рисунок 2.7 – Окно выбора библиотеки инструкций и файла проекта

 

2.3.8 Нажимаем кнопку «Далее» и в следующем окне кнопку «Готово».

Результат создания проекта выглядит таким образом:

Рисунок 2.8 – Окно с созданным проектом

2.4 Выполним соответствующие настройки для запуска Вашего проекта:

 

2.4.1 Выполняем через меню: Configurue>Select Device

Появляется окно с параметрами МК PIC16F877A. Подтверждаем их OK.

 

Рисунок 2.10 – Окно с параметрами для выбранного микроконтроллера

 

2.4.2 Далее выбираем меню: Configurue>Сonfiguration Bits.

В диалоговом окне выставляем параметры согласно рисунку. После ввода всех параметров закрываем данное окно.

Рисунок 2.10 – Окно настройки параметров

 

2.4.3 Еслипроект будем выполнять в режиме симулятора, то выбираем: Debugger>Select Tool>MPLAB Sim.

2.4.4 Компилируем проект: Project>Make

 

Рисунок 2.11 – Окно после компиляции

Если проект выполнен без ошибок, то в окне сообщений компилятора не будет Error. Если,будут строки с Error, то двойным щелчком по этой строке в окне программы открывается программа с указанием ошибочного места. Устраняем ошибку.

2.4.5Создаем окно наблюдения: View>Watch. С помощью кнопки «Add SFR» добавляем в окно наблюдения регистры, состояние которых мы хотим увидеть по ходу выполнения программы. В данной программе мы хотим увидеть состояние РСН:STATUS,TRISC, PORTC, WREG. Набираем начальную букву регистра в левом верхнем окне окна Watch, выбираем из открывшегося списка наименование нужного регистра и нажимаем кнопку «Add SFR». Чтобы увидеть состояние РОН, набираем начальную букву регистра в правом верхнем окне окна Watch, выбираем из открывшегося списка наименование нужного регистра (Con) и нажимаем кнопку «Add Symbol». Для каждого регистра назначаем систему счисления, в которой будет выводиться состояние регистра, преобразованное в значение числа: двоичная (b), шестнадцатеричная (h), десятичная (d). Для этого в окне Watch щелкаем правой клавишей по нужному регистру, выбираем Свойства и в открывшемся окне выбираем систему счисления при отображении.

 

 

Рисунок 2.12 – Окно создания окна наблюдения

 

Рисунок 2.13 – Окно с созданным окном наблюдения

 

Сохраняем созданный проект Project>Save.

2.4.6 В режиме симулятора невозможно отлаживать аппаратно-зависимые участки кода, которые трудно, а порой невозможно воспроизвести в симуляторе, например: работа с АЦП, измерение временных параметров входного сигнала, организация обратной связи с управляемым объектом, отладка интерфейсов USART, SPI, I2C и т.п.

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

Сохраняем созданный проект в общей папке на компьютере, к которому подключен УМК-7. На данном компьютере вызываем из этой папки созданный проект.

Выбираем: Debugger>Select Tool>MPLAB ICD2.

Рисунок 2.14 – Окно выбора режима MPLAB ICD2

2.4.7 Настраиваем соединение УМК с компьютером: Debugger>Settings>Communication>COM1. Далее OK.

Рисунок 2.15 – Окно выбора параметров соединения

Для проверки наличия соединения с УМК-7 выбрать Debugger>Connect

 

2.4.8Записываем созданную программу в память программ: Debugger>Program.

2.4.9 Для покомандного исполнения программы нажимаем F7 или Step Into ( вверху, справа). Для выполнения созданной программы в автоматическом режиме Debugger>Run. Остановка Debugger>Halt.

Оформление отчета по лабораторной работе

Отчет выполняется на группу. В отличии от отчета по лабораторной работе № 1 отчет по данной лабораторной работе и последующим создается на компьютере, к которому подключен УМК-7, в процессе выполнения проекта. В вордовском файле сохраняется текст программы и через PrtSc- характерное состояние регистров в окне при пошаговом выполнении программы. В упражнениях, где программа запускается в режиме Run, сохраняется окно с выполнением конечной операции. В конце приводятся ответы на вопросы. Отчет в формате Word сохраняется в общей папке компьютерного класса. Защита производится на следующем занятии.

Выводы.

2.6.1.Режим управления технологическим оборудованием через регистр PORTC (или другой порт), или режим ввода информации в разряды PORTC (или другой порт) устанавливается через настройку соответствующего регистра TRIS.

2.6.2.При использовании инструкции CLRF для очистки регистра STATUS обнуляются биты 5-7. Остальные биты равны 1.

2.6.3.При всех изменениях в написании программы по ходу ее отладки необходимо заново компилировать проект Project>Make и сохранять Project>Save. Если проект выполняется в режиме MPLAB ICD2, то необходимо заново записать его в память программ Debugger>Program.

 

 

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

 

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

2. Что выполняет инструкция MOVLW B’00001111’?

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

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

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

6. С какой целью выполняется инструкция MOVWF TRISD?

7. С какой целью выполняется инструкция BSF STATUS, 5?

8. С какой целью выполняется инструкция BCF STATUS, 5?

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

10. Почему при автоматическом выполнении рабочей программы в

режиме RUN светятся все светодиоды одновременно?

11. Что такое адрес регистра и содержимое регистра.

12. Назначение символа «;» в тексте программы?

13. В каких банках находятся регистры PORTC и TRISC?

14. Назначение регистра TRISC.

15. Какие из рассмотренных инструкций относятся к байт ориенти-

рованным?

16. На какие части делится программа?

17. Какое напряжение питания МК?

18. Какое напряжение в разрядах PORTC?

19. Какие из рассмотренных инструкций относятся к байт ориенти-

рованным?

20. Какие из рассмотренных инструкций относятся к бит ориенти-

рованным?

21. Какие из рассмотренных инструкций относятся к инструкциям

управления и операциям с константами?

 

 



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 634; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.22.135 (0.055 с.)