Лабораторная работа № 1. Системы счислений. Карта памяти данных PIC16F87x 


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



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа № 1. Системы счислений. Карта памяти данных PIC16F87x



Введение

Современное состояние технологии в электроэнергетике требует от специалистов знания микроконтроллеров. В настоящее время в составе выпускаемых изделий многих фирм в дальнем и ближнем зарубежье содержатся микроконтроллеры, и область их применения постоянно увеличивается.

Микроконтроллеры широкого назначения выпускаются многочисленными зарубежными фирмами: Motorola, NEC Corporation, Siemens, Microchip и другими.

Применение методов и технических средств обработки информа­ции цифровой вычислительной техникой в релейной защите и авто­матике (РЗА) привело к созданию интегрированных комплексов, выполняющих все функции традиционных устройств РЗА и облада­ющих широкими информационными свойствами и сервисными возможностями, существенно повышающими надежность и эффек­тивность функционирования технических средств автоматического управления электроэнергетическими установками [1].

Для обучения студентов цифровой технике и программированию микроконтроллеров на кафедре имеется учебный микропроцессорный комплект (УМК-7). Помимо обучения языку ассемблер на примере контроллера PIC16F877, студенты знакомятся с внутренней и внешней структурой современных микроконтроллеров, применяемых в оборудовании.

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

Отчет о лабораторной работе должен содержать титульный лист, задание, текст программы, заполненную таблицу результатов, рисунки с копиями экрана и ответы на контрольные вопросы.

Лабораторная работа должна быть защищена студентом.

Оборудование и программное обеспечение для проведения лабораторных работ: Windows 98 или выше, среда MPLAB, комплект УМК-7.

Каждая команда PIC16C87ХХ представляет собой 14-битовое слово, которое разделено на следующие части: первая- код операции, вторая-поле для одного операнда, который может участвовать или нет в этой команде. Система команд PIC16C87ХХ включает в себя байт-ориентированные команды, бит-ориентированные, операции с константами и команды передачи управления.

Для байт-ориентированных команд "f" обозначает собой регистр,

с которым производится действие; "d" - бит определяет, куда положить

результат. Если "d" =0, то результат будет помещен в регистр W. (аккумулятор), при "d"=1 результат будет помещен в регистр с адресом

"f", упомянутом в команде.

Для бит-ориентированных команд "b" обозначает номер бита,

участвующего в команде, а "f" -это регистр, в котором этот бит

расположен.

Для операций с константами и команд передачи управления, "k"

обозначает восьми или одиннадцати битную константу.

Все команды выполняются в течение одного командного цикла. В

двух случаях исполнение команды занимает два командных цикла:

проверка условия и переход либо изменение программного счетчика как

результат выполнения команды GOTO и CALL. Один командный цикл

состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс, а производительность контроллера составит 1 миллион операций в секунду (1 MIPS – 1 million instructions per second).

ОБЩЕЕ ОПИСАНИЕ MPLAB IDE И MPLAB–ICD

MPLAB IDE (Integrated Development Environment) –интегрированная среда разработки, представляет собой программный продукт, работающий под управлением операционной системы WINDOWS и предназначенный для написания, отладки и оптимизации программ для Microchip PIC контроллеров. MPLAB IDE включает в себя:

MPLAB Project Manager– менеджер проекта;

MPLAB Editor – текстовый редактор,

MPLAB-SIM Simulator – симулятор;

MPASM – универсальный Ассемблер, а так же MPLINK (Линковщик) и MPLIB (Библиотекарь).

Для контроллеров семейства PIC17, PIC18, а так же dsPIC, в среде

MPLAB IDE есть возможность работать с компиляторами языка Си –более высокого уровня, по сравнению с ассемблером.

Ряд аппаратных средств, работающих под управлением MPLAB

IDE, приведен ниже:

-MLPAB-ICE Emulator – эмулятор;

-программаторы PICSTART Plus и PRO MATE 2;

-инструментальные средства третьих лиц – большое количество

других компаний делают инструментальные средства разработки,

работающие с MPLAB.

MPLAB-ICD (In Circuit Debugging) - внутрисхемный отладчик,

позволяет выполнять внутрисхемную отладку программы в реальной

схеме, используя генератор и периферию отлаживаемого контроллера.

Для отладки используются только два вывода контроллера, работа идёт

по ICSPTM интерфейсу.

Используя ICD, можно отлаживать аппаратно-зависимые участки

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

например: работа с АЦП, измерение временных параметров входного

сигнала, организация обратной связи с управляемым объектом, отладка интерфейсов USART, SPI, I2C и т.п.

MPLAB-ICD работает под управлением универсальной программной среды MPLAB и обладает следующими возможностями:

-отладка в режиме реального времени и пошаговая отладка;

-связь с компьютером по RS-232;

-одна задаваемая точка останова;

-просмотр и модификация содержимого управляющих регистров, RAM и EEPROM.

-внутрисхемная отладка и встроенная система программирования PIC -контроллеров серии PIC16F87x.

-работа от источника питания отлаживаемой конструкции в диапазоне от 3,0 до 5,5 В.

-диапазон рабочих частот от 32 кГц до 20 МГц.

Системы счисления

 

В микроконтроллере данные и промежуточные результаты представлены в двоичной системе счисления. Все регистры памяти в микроконтроллере нумеруются в шестнадцатеричной системе. Системы счислений, применяющиеся в цифровой технике, представлены в приложении А. Там же приведен алгоритм перевода чисел из двоичной системы в шестнадцатеричную и наоборот [2].

В десятичной системе прибавление к цифре 9 единицы дает в результате число 10, то есть 9+1=10. Аналогичный результат и в шестнадцатеричной системе F+1=10 или 2F+1=30. То есть в младший разряд записываем цифру 0, в старший добавляем 1. В двоичной системе 1+1=10.

Задание 1.Сложите числа в двоичной системе. Представьте слагаемые и результаты вычислений в шестнадцатеричной, десятичной и в двоично-десятичной системах счислений.

 

Т а б л и ц а 1.1 – Варианты к заданию 1

Вариант            
Число А            
Число В            

 

Вариант            
Число А            
Число В            

 

Вариант            
Число А            
Число В            

 

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

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

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

1. Сколько будет 5F+3?

2. Что такое основание системы счисления?

3. Какие цифры имеются в двоичной системе?

4. Какие цифры имеются в шестнадцатеричной системе?

5. Сколько будет 4F+1?

6. Сколько банков в микроконтроллере PIC16F877А?

7. Как записываются адреса регистров?

8. Как можно обратиться в программе к регистру?

9. Что такое адрес регистра?

10. Какие адреса у регистров общего назначения в банках?

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

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

 

Задача.Создать программу, поясняющую функции регистров 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. Какие из рассмотренных инструкций относятся к инструкциям

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

 

 

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

 

Изучите программу 3.1, которая выполняет различные действия с двумя константами и выводит результаты работы в регистр REZ. Программа легче читается, если в инструкциях вместо адреса регистра писать его символьное имя. В лабораторной работе №2 мы уже писали в инструкциях вместо адресов РСН их имена: PORTC, TRISC, STATUS, W и присваивали символьные имена РОН, используя R1 EQU h’21’. Указатель EQU от equal (англ.) – одинаковый, равносильный.

В микроконтроллерах PIC16F87x операция вычитания выполняется как сложение в дополнительном коде. Ниже приведены простые примеры перевода вычитаемого в дополнительный код.

А) 8-10=-2

В двоичном виде: 00001000 – 00001010

Запишем 00001010 в инверсном коде: 11110101. Для получения дополнительного кода добавим 1. Получим 11110110.

+ 11110110

= 11111110

Результат выражен в дополнительном коде. Отнимем 1 от результата:

11111110 – 1=11111101. Инвертируем результат: 00000010=2.

Б) 10-8=2

Запишем 00001000 в дополнительном коде, произведя инвертирование и потом добавление 1: 11110111 + 1 = 11111000.

11111010 + 11111000 = 00000010 = 2, при этом отметим, что произошел перенос в 8-й разряд.

Задание: создать программу, позволяющую проверить результат применения инструкций логических операций и отследить реакцию содержимого разрядов 0-2 в регистре STATUS после выполнения предшествующей операции. Появление флагов (1) или их отсутствие (0) позволяет изменять работу программы при использовании инструкций BTFSS и BTFSC.

Программа 3.1.

Include <p16F877А.inc>; в этом файле описаны символьные имена РСН.

R1 EQU h'21'; R1 - символьное имя регистра по адресу h’21’.

R2 EQU h'22'; R2 - символьное имя регистра по адресу h’22’.

R3 EQU h'23'; R3 - имя регистра по адресу h’23’.

REZ EQU h'24'; REZ - имя регистра для записи результатов.

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

ORG h'00'; следующая инструкция NOP будет записана по адресу h’00’.

NOP; пишется для настройки отладчика.

NOP

NOP

ORG h'05'; следующая инструкция CLRF запишется по адресу h’05’.

CLRF STATUS; очищаем регистр от мусора, выбираем нулевой банк.

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

BSF STATUS, 5; переходим в первый банк в нём регистр TRISC.

CLRF TRISC; настраиваем все биты PORTC на вывод данных.

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

; Рабочая часть программы. Ввод данных

MOVLW D'240'; запись константы в аккумулятор W.

MOVWF R1; запись содержимого W в регистр R1.

MOVLW D'130'; запись константы в аккумулятор W.

MOVWF R2; запись содержимого W в регистр R2.

MOVLW D'5'; запись константы в W.

MOVWF R3; запись содержимого W в регистр R3.

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

; Выполнение вычислений

MOVF R1, W; запись константы из R1 в регистр W.

SUBWF R2, W; вычитание W=R2-W=R2- R1.

MOVWF REZ; переслать содержимое W в регистр REZ.

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

MOVF R2, W; запись константы из R2 в регистр W.

ADDWF R1, W; W=R2+W=R1+R2.

MOVWF REZ

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

MOVF R2, W; копируем содержимое R2 в W.

SUBWF R1, W; вычитание W=R1-W=R1-R2. Результат оставляем в W.

MOVWF REZ; переслать содержимое W в регистр REZ

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

MOVF R2, W; запись константы в регистр W из R2.

ADDWF R3, W; W=R3+W=R2+R3.

MOVWF REZ

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

MOVF R2, W; запись константы в регистр W из R2.

SUBWF R2, W

MOVWF REZ

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

MOVF R2, W; запись константы в регистр W из R2.

ANDWF R1, W; операция W=R1 AND W(R2), результат в W.

MOVWF REZ

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

MOVF R2, W; запись константы в регистр W из R2.

ORWF R1, W; операция W=R1 OR W(R2), результат в W.

MOVWF REZ

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

MOVF R2, W; запись константы в регистр W из R2.

XORWF R1, W; операция W=R1 XOR W(R2), результат в W.

MOVWF REZ

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

RRF R1,w;деление на 2 без очистки бита С регистра STATUS. После выполнения;сдвига вправо сдвигаемый бит 0 из регистра R1 переместился в бит С регистра STATUS, а;единица из бита С регистра STATUS добавилась слева к значению регистра R1 и;сохранилась в аккумуляторе W. Значение неверно.

MOVWF REZ

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

RLF R1,w; 240*2=480, произошло переполнение регистра, в нем осталось 480-256=224,;в бите С регистра STATUS появилась 1, чтобы операция деления выполнилась верно, надо;его обнулить

MOVWF REZ

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

BCF STATUS,C

RRF R1,w

MOVWF REZ

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

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

 

Данные для варианта возьмите из таблицы 3.2.

 

Т а б л и ц а 3.2 – Варианты задания

Вариант Числа R1, R2, R3 Вариант Числа R1, R2, R3
  81h, 12h, 1h   86h, 67h, 6h
  82h, 23h, 2h   87h, 68h, 7h
  83h, 34h, 3h   88h, 69h, 8h
  84h, 45h, 4h   89h, 6Ah, 9h
  85h, 56h, 5h   8Ah, 6Bh, Ah

 

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

Отчет выполняется на группу по результатам выполнения лабораторной работы в режиме MPlabSim. В вордовском файле сохраняется текст программы и через PrtSc - характерное состояние регистров в окне при пошаговом выполнении программы. В этот же файл включается таблица 3.3, данные в которую записываются при пошаговом выполнении программы в режиме MPlabSim. Отчет в формате Word сохраняется в общей папке компьютерного класса. Защита производится на следующем занятии.

Т а б л и ц а 3.3 - Пример записи результатов работы команд

Числа на входе Действие Результат Значение в Status Форма B
Форма B или D Форма B или D REZ(D) Wreg(B)
    CLRF STATUS      
R1=D’240’ R2=D’130’ R1-R2=240-130 D’110’ -  
    BCF STATUS,0      
R1=D’240’ R2=D’130’ R1+R2=240+130 D’114’ -  
R1=D’240’ R2=D’130’ R2-R1=130-240 D’146’ -  
R2=D’130’ R3=D’5’ R2+R3=130+5 D’135’ -  
R2=D’130’ R2=D’130’ R2-R2130-130 D’0’ -  
R1=D’240’ R2=D’0’ R2-R1=0-240 D’16’ -  
R1=b’11110000’ R2=b’10000010’ R1 AND R2 -    
R1=b’11110000’ R2=b’10000010’ R1 OR R2 -    
R1=b’11110000’ R2=b’10000010’ R1 XOR R2 -   00011011
Результат неверный R1/2 RRF     00011010
Результат правильный R1/2 RRF      
  R1*2 RLF      
    BCF STATUS,C      
  R1/2 RRF      

Создайте окно наблюдения для всех применяемых в программе регистров в необходимом формате чисел. Результаты работы всех операций с числами запишите в таблицу 3.2.

Выводы

3.4.1Для получения правильного применения инструкций RRF и RLF перед ее применением необходимо обнулить бит С в регистре STATUS.

3.4.2 Деление на 2 нечетных чисел выполняется с погрешностью.

 

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

 

1. Как определить с регистрами какого банка работает программа?

2. Что выполняет инструкция ADDWF R1,F и в какой регистр помещается результат ее выполнения?

3. Что выполнят инструкция SUBWF R2,F и в какой регистр помещается результат ее выполнения?

4. Что выполняет инструкция ANDWF R1,F и в какой регистр помещается результат ее выполнения?

5. Что выполняет инструкция IORWF R1,W и в какой регистр помещается результат ее выполнения?

6. Что выполняет инструкция XORWF R2,W и в какой регистр помещается результат ее выполнения?

7. Приведите инструкции установки и сброса бита.

8. Назначение директивы ORG h’05’.

9. Приведите таблицы истинности логических операций.

10. Назовите знакомые вам устройства, в которых применяются МК.

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

12. В каком банке находятся созданные в программе регистры R1, R2 и

REZ.

13. Какой результат мы увидим при сложении 230+60 в МК?

14. Какой результат мы увидим при вычитании 130-135 в МК?

15. Что надо делать, чтобы операции деления на 2 и умножения на 2

выполнялись верно?

 

Таймеры

 

Цель работы: изучение способов создания задержек выполнения следующей инструкции, в соответствии с реализацией управляющего алгоритма. Например, такие задержки нужны в цикле АПВ, в реализации алгоритмов АЧР и т.д.

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

Реализацию пауз между следующими друг за другом инструкциями можно осуществить созданием таймеров на основе вложенных циклов и использования периферийных устройств микроконтроллера - таймеров: ТМR0, ТМR1 и ТМR2.

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

Изучите работу таймеров ТМR0, ТМR1 и ТМR2 и назначение регистра PCL по [11] и приложению Г, а также инструкции DECF.

 

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

Соедините разряды PORTC и разъемы сигнальных ламп также, как и в лабораторной работе №2. Запишите программу 4.1, отладьте ее в режиме MPlabSim. В окно наблюдения включите РСН STATUS, TRISC, W, PORTC, PCL, а также РОН Sch_in, Sch_out, Sch3. В пошаговом режиме перед запуском таймера CALL Timer сохраните в вордовском файле состояние окна наблюдения и далее сохраняйте эти окна после завершения каждого цикла. Сравните состояние регистров STATUS, W и PCL перед включением таймера и после выхода из него. Определите разницу в значениях разрядов. Измените в программе значения количества выполняемых циклов в соответствии с вариантами из таблицы 4. Сохраните программу в общей папке на компьютере, к которому подключен УМК-7. На этом компьютере откройте сохраненный текст программы и выполните последовательно пункты по созданию проекта в режиме MPLAB ICD2 c записью созданного проекта в память программ. Подготовьте секундомер для записи времени задержки. Запустите программу в режиме Run. При загорании лампы в разряде 7 включите секундомер, а при загорании лампы в разряде 0 зафиксируйте время. Запишите время в отчете.

 

Таблица 4 Задания по количеству операций в каждом цикле

Наимен.цикла Вариант 1 Вариант 2 Вариант 3
Sch_in      
Sch_out      
Sch3      

 

 

Программа 4.1

Include<p16F877A.inc>

Sch_in EQU H'22'; счетчик внутреннего цикла задержки.

Sch_out EQU H'23'; счетчик внешнего цикла задержки.

Sch3 EQU H'24'; счетчик третьего цикла задержки.

ORG h'00'

NOP

NOP

NOP

ORG h'05'

CLRF STATUS

BSF STATUS,5

CLRF TRISC

BCF STATUS,5

MOVLW B'10000000'

MOVWF PORTC; в режиме Run по загоранию лампы в разряде 7;запускаем секундомер для определения времени работы таймера

MOVLW d'2'; задаем количество повторения третьего цикла;таймера равное 2 только для отладки. Для выполнения на микроконтроллере;в режиме Run используйте задание по варианту из таблицы 4

; сохранить окно в отладочном режиме

CALL Timer

MOVLW B'00000001'

MOVWF PORTC; по загоранию лампы Л-0 на УТК-7 фиксируем;секундомер для определения времени работы таймера в режиме Run

; сохранить окно в отладочном режиме

GOTO $; разделитель основной программы и подпрограмм.

Timer; подпрограмма Timer. Применено два вложенных цикла.

MOVWF Sch3; значение W является аргументом для таймера.

;M3

MOVLW D'2'; для отладки 2, а для варианта-по заданию

MOVWF Sch_out; устанавливаем значение внешнего счетчика.

;M_out - метка внешнего счетчика.

MOVLW D'2'; для отладки 2, а для варианта-по заданию

MOVWF Sch_in; устанавливаем значение внутреннего счетчика.

;M_in - метка внутреннего счетчика.

DECF Sch_in,F; уменьшаем значение счетчика Sch_in на 1. Когда;результат будет равен 0, то следующая команда пропускается

; сохранить окно в отладочном режиме, когда Sch_in=0

GOTO M_in; срабатывает только при Z=0.

DECF Sch_out,F; уменьшаем значение счетчика Sch_out на 1.

; если счётчик обнулился, пропускаем GOTO.

; сохранить окно в отладочном режиме, когда Sch_out=0

GOTO M_out; инструкция срабатывает только при Z=0.

DECF Sch3,F; уменьшаем значение счетчика Sch3 на 1

; сохранить окно в отладочном режиме, когда Sch3=0

GOTO M3; срабатывает только при Z=0.

RETURN; конец подпрограммы Timer.

END; конец текста всей программы.

 

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

Отчет оформляется на группу. В созданный вордовский файл копируется текст программы и окна по ходу выполнения программы в режиме MPLabSim. Записывается время паузы, созданной таймером при использовании заданных по варианту значений количества повторений в каждом цикле. Определите расчетное значение паузы, исходя из условия, что микроконтроллер в УМК-7 имеет тактовую частоту 20 МГц.

 

Выводы

4.4.1 Применение встроенных таймеров позволяет создать в 8-разрядных микроконтроллерах необходимые расчетные временные задержки.

4.4.2 В программе может быть создано несколько подпрограмм с разными временными задержками.

 

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

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

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

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

4.Какое напряжение в PORTC?

5. Поясните инструкцию условного перехода BTFSC STATUS, Z

6. Поясните инструкцию условного перехода BTFSS STATUS, Z

7. Поясните инструкцию DECF Sch_out,F

8. Поясните инструкцию INCF R,f

9.Поясните инструкцию GOTO$

10. Поясните инструкцию RETURN

11. Что такое машинный цикл и как определить время его выполнения?

12.Сколько машинных циклов требуется для выполнения команд в

подпрограмме Timer в отладочном режиме при задании всем счетчикам

значения 3?

13.Как вызывается подпрограмма на выполнение?

14.Какой адрес появляется в счетчике команд в регистре PCL после выполнения подпрограммы?

 

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



Поделиться:


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

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