Некоммерческое акционерное общество

АЛМАТИНСКИЙ ИНСТИТУТ ЭНЕРГЕТИКИ И СВЯЗИ

Кафедра инженерной кибернетики

 

ЦИФРОВАЯ ТЕХНИКА  И  МИКРОКОНТРОЛЛЕРЫ

Методические указания к выполнению лабораторных работ
для студентов всех форм обучения
специальности 050718 - Электроэнергетика

 

Алматы 2009

СОСТАВИТЕЛИ: А. А. Копесбаева, В. М. Тарасов. Цифровая техника и микроконтроллеры. Методические указания к выполнению лабораторных работ для студентов всех форм обучения специальности 050718 - Электроэнергетика - Алматы: АИЭС, 2009. – 40с. 

Представлены методические указания к выполнению лабораторных работ по дисциплине «Цифровая техника и микроконтроллеры». Во время лабораторных работ студенты осваивают применение микроконтроллеров и технологию разработки для них программ на примере PIC16F877.

Введение 

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

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

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

Перспективные цифровые микропроцессорные комплексы РЗА созданы в НПФ "Радиус" (г. Москва), НТЦ "Механотроника" (г. С.-Петербург) в виде различных модификаций многофункцио­нальных микропроцессорных устройств РЗА распределительных электрических сетей, типов "Сириус", БРМЗ, БМ АЧР и др.

Совместным предприятием "АББ Реле-Чебоксары" изготавлива­ются и поставляются на действующие энергетические объекты наиболее пер­спективные современные микропроцессорные устройства и систе­мы РЗА, управления и сигнализации (РЗАУС), микропроцессорные РЗ серий SPA-100, SPA-300, комплексные устройства РЗА серии SPAC-800, устройства РЗ линий электропередачи, трансформаторов, шин, генераторов и других объектов на базе терминалов RE-500.

Разрабатываются и изготавливаются и другие типы микропроцес­сорных устройств, позволяющих осуществлять комплексное осна­щение электрических станций (ЭС), подстанций (ПС), промыш­ленных предприятий и других объектов всех уровней напря­жения от 0,4 кВ устройствами РЗА (в том числе комплексами АСУ ТП). Основанные на последних достижениях информационных тех­ноологий, они полностью отвечают специфическим требованиям энергетики, доступны в обслуживании и легко интегрируются в автоматизированные системы РЗА, управления и контроля подстанций и электрической части станций любого уровня.

Им присущи важные поло­жительные свойства, отсутствующие у аналоговых устройств:

-   многофункциональность и малые размеры: одно цифровое изме­рительное реле заменяет несколько аналоговых;

-   дистанционные изменения и проверка установок с пульта управле­ния оператора;

-   адаптация к режиму ЭЭС т.е. автоматическая корректировка параметров РЗА при изменении схемы и режима работы ЭЭС;

-   непрерывная самодиагностика и высокая аппаратная надеж­ность;

-   регистрация и запоминание параметров аварийных режимов;

-   дистанционная передача оператору информации о состоянии и срабатываниях устройств РЗА;

-   сокращение специального технического обслуживания: перио­дических проверок настройки и исправности устройств РЗА.

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

В данные методические указания входят 10 лабораторных работ на учебном микропроцессорном комплекте УМК-7.

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

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

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

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

 

1 Лабораторная работа 1. Отображение чисел в цифровой технике

 

Цель работы: приобрести начальные знания в области применения микроконтроллеров и основ цифровой техники.

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

О преимуществах изделий с микроконтроллерами написано во введении.

У микроконтроллеров имеются выводы для подключения внешних устройств. Информация с этих выводов сохраняется в специализированной области памяти. Они объединены в функциональные группы-регистры называемые PORTA, PORTB, PORTC, PORTD. В порту А имеется  6 выводов, в остальных перечисленных портах по 8 выводов. В лабораторных работах  будем использовать, как правило, порт С, иногда порт D. В результате выполнения программы на выводы порта либо будет подаваться напряжение, либо нет. Содержание регистра порта, а также нумерация разрядов порта показана на рисунке 1.1.

      

Наличие напряжения принято обозначать цифрой 1, отсутствие - цифрой 0. Все выводы регистра нумеруются, начиная с нуля справа налево, и называются разрядами или битами.

Рисунок 1.1- Схема регистра

К выводам порта присоединяются различные приборы и устройства, управляющие технологическим процессом. С их помощью можно подключить, например, вентилятор, конвейер, насос подачи реагента и т.д. Если на соответствующем выводе порта будет напряжение (обозначаемое цифрой 1), то устройство будет включено. На лабораторных работах мы будем присоединять к выводам микроконтроллера вместо технологического оборудования светодиоды, сигнализирующие о результате работы микроконтроллера. Представленные на рисунке 1.1 набор нулей и единиц формально считают числом в двоичной системе счисления. Положение цифры в числе называют разрядом. Блок из 8 разрядов называют байтом. Перебирая все сочетания нулей и единиц, начиная с 00000000 до 11111111, можем считать, что в байт можно записать 256 чисел от 0 до 255 в нашей десятичной системе счисления.

В микроконтроллере данные и промежуточные результаты запоминаются в двоичной системе в регистрах общего назначения (РОН)  оперативного запоминающего устройства.  Все регистры в микроконтроллере нумеруются, естественно, также в двоичной системе. Номер регистра называют его адресом. Программисту неудобно работать с двоичными числами, поэтому их представляют в более компактной шестнадцатеричной системе счисления, имеющей 16 цифр. Эта система выбрана из-за очень простого алгоритма перевода чисел в нее из двоичной системы. Системы счислений применяющиеся в цифровой технике представлены в приложении А. Там же приведен алгоритм перевода чисел из двоичной системы в шестнадцатеричную и наоборот.

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

С данными в виде двоичных чисел программой выполняются различные математические действия для анализа ситуации на технологической установке. В программе двоичное число записывают в стандартной форме В’01010011’. Шестнадцатеричное число можно записывать двумя способами: h’21’ или 21h.

Все регистры микроконтроллера объединены в 4 группы, называемыми банками, показанными в приложении Б. Банки имеют нумерацию в двоичной системе: 00 – банк ‘0’, 01 – банк ‘1’, 10 – банк ‘2’, 11 – банк ‘3’.

Все существующие регистры и их адреса в шестнадцатеричной системе показаны в приложении Б. Программист для хранения данных может использовать регистры общего назначения (РОН). Остальные регистры имеют специальное функциональное назначение. К регистру или даже к его разрядам можно обратиться по адресу или по имени.

Лабораторная работа 1 выполняется индивидуально.

Т а б л и ц а  1.1 – Сложите числа в двоичной системе

Вариант

1

2

3

4

5

6

Число А

00110101

01101101

00111001

01100101

01001001

01110100

Число В

00110001

01101001

00101001

00100101

01000001

00111101

 

Вариант

7

8

9

10

11

12

Число А

00110001

01101001

00101001

00100101

01000001

01110111

Число В

00110101

01101101

00111001

01100101

01001001

00110111

 

Вариант

13

14

15

16

17

18

Число А

00110101

00111001

01101001

00110101

01010001

01011101

Число В

00110001

01101101

00111001

01100101

01001001

00110010

 

Т а б л и ц а  1.2 - Определите имена регистров и их банки

Вариант

1

2

3

4

5

6

Регистр А

00000010

00001001

00001010

10000010

10000101

10011111

Регистр В

00101000

00110101

00111000

01010101

01100001

11101110

 

Вариант

7

8

9

10

11

12

Регистр А

10010010

10010011

10011000

00011110

00011110

10011001

Регистр В

10100010

10100010

10110101

11100101

11101110

00011111

 

Вариант

13

14

15

16

17

18

Регистр А

10010010

10010011

10011000

00011110

00011110

10001110

Регистр В

10100010

10100010

10110101

11100101

11101110

01111111

 

Т а б л и ц а  1.3 - По имени регистра  и банку определите адрес в форме В и h

Вариант

1

2

3

4

5

6

Банк

0

1

1

1

1

1

Имя

PLC

FSR

INTCOM

STATUS

TRISB

INTCOM

 


Продолжение таблицы 1.3.

Вариант

7

8

9

10

11

12

Банк

1

0

1

0

1

1

Имя

PLC

TMPO

INTCOM

STATUS

TRISD

TRISB

 

Вариант

13

14

15

16

17

18

Банк

1

0

1

0

1

1

Имя

PLC

PIR1

PIE2

PIR2

PIE1

FSR

 

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

1.        Какими цифрами обозначают наличие и отсутствие напряжения?

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

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

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

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

6.        Расскажите о преимуществах микроконтроллеров.

7.        Какие фирмы выпускают изделия с микроконтроллерами?

8.        Какие функции выполняют микроконтроллеры?

9.        Сколько банков в микроконтроллере PIC?

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

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

2 Лабораторная работа 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 – Варианты  заданий

Вариант

Заданные значения

Вариант

Заданные значения

1

00001111

6

10101010

2

11110000

7

01010101

3

00111100

8

00110011

4

11001100

9

11100010

5

01001101

10

00011101

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

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

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

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

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

-       создать новый проект командами ProjectNew 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 ModeMPLAB ICD Debugger. Программирование кристалла может занять пару минут, в течение которых в поле Status показывается процесс выполнения. После завершения программирования в поле Status отображается сообщение “Waiting for user command” - “Ожидание команды пользователя”.

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

Если пошаговое выполнение программы застряло на какой - либо строке и не продолжается дальше, выполните команду DebugClear 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.   Объясните, почему светятся все светодиоды одновременно в автоматическом режиме выполнения программы?

 

3 Лабораторная работа 3. Настройка порта С. Символьные имена

 

 Цель работы: применение и выполнение поразрядной настройки регистра PORTC на ввод или вывод. Применение в программе символьных имен.

Символьные имена устраняют двусмысленность и облегчают чтение текста программы. Ассемблер, когда встретит символьное имя, вместо него подставит значение, присвоенное символьному имени. Это может быть число или адрес регистра.

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

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

Изучите программу 3.1. В этой программе выполнена настройка четырех младших разрядов регистра PORTС на вывод, остальных - на ввод. Будем проверять прохождение на вывод бит числа В’01010011’. Программа решает задачу запрета подключения оборудования по фидерам 2 и 6, оставляя возможность подключения фидеров 0 и 1.

include <p16F877.inc>

          R0     EQU  h'01' ; R0 - символьное имя, его значение 01h.

          R1     EQU  h'02' ; R1 - символьное имя, его значение 02h.

          R2     EQU  h'10' ; R2 - символьное имя, его значение 10h.

          R3     EQU  h'40' ; R3 - символьное имя, его значение 40h.

; Начало исполняемой части программы.

org     0x000   ; Выполнение программы начинается с нулевого адреса.

nop

nop

nop

org     05h      ; Продолжить с адреса 5.

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

CLRF    STATUS            ; Очистка регистра STATUS.

BSF   STATUS, 5                    ; Записать 1 в бит RP0 и выбирать банк ‘1’.

MOVLW     B’11110000’; Значение, используемое для настройки порта С.

MOVWF  TRISC           ; Настройка четырех младших разрядов порта С
                                                 ; на вывод, а четырех старших разрядов на ввод.

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

LOOP                                      ; Метка для повторения цикла.

CLRF             PORTС             ; Очистить порт С, т.е. потушить светодиоды.

MOVLW     R0               ; Записать в W  число 01h.

MOVWF     PORTС       ; Записать в порт С число 01h.

MOVLW     R1               ; Записать в W  число 02h..

MOVWF     PORTС       ; Записать его в порт С.

MOVLW     R2               ; Записать в W  число 10h.

MOVWF     PORTС       ; Записать в порт С число 10h.

MOVLW     R3               ; Записать в W  число 40h.

MOVWF     PORTС       ; Записать в порт С число 40h.

BSF  STATUS, 5           ; Перейти в банк ‘1’.

BCF TRISC, 6               ; 7-й разряд порта С настраиваем на вывод.

BСF  STATUS, 5           ; Перейти в банк ‘0’.

                                      ; Светится  ли 7-й светодиод?

GOTO        LOOP           ; Вернуться на метку LOOP для повторения.

END

 

Выполнение проекта

Откройте предыдущий свой проект, измените, приведите текст программы в соответствие с программой 3.1. Сохраните эту программу, не изменяя имени файла. Используя команды Save Project и Make Project, создайте и сохраните проект, как описано во 2-й лабораторной работе, не меняя его имени.

Внимание! В дальнейших лабораторных работах меняйте только текст программы, не меняя имени файла и проекта.

Когда в разряд записана единица, часто говорят: бит установлен, если записан нуль – говорят бит сброшен.

Запрограммируйте кристалл и запустите программу в пошаговом режиме командами DebugRun - Step.

Сопоставьте результат работы программы  с таблицей 3.1.

Т а б л и ц а 3.1 – Таблица результатов

Число в TRISC для настройки порта С

Пересылаемая в порт С константа

Выходное число в порт С

B’11110000’

B’00000001’

B’00000001’

B’11110000’

B’00000010’

B’00000010’

B’11110000’

B’00010000’

B’00000000’

B’11110000’

B’01000000’

B’00000000’

B’10110000’

B’01000000’

B’01000000’

Если все правильно, измените программу и проект согласно заданию в таблице 3.2. Запустите его и заполните таблицу результатов.

Т а б л и ц а 3.2 - Варианты  заданий

 

Вариант

Константа настройки  порта С  на ввод/вывод

Число, пересылае-мое  в
порт С

Вариант

Константа настройки  порта С  на ввод/вывод

Число, пересылае-мое  в
порт С

1

00111100

00001111

6

11110000

10101010

2

01100111

11110000

7

11000011

01010101

3

00011110

00111100

8

11100001

00110011

4

00111011

11111111

9

11100111

00111111

5

00011101

10101010

10

01110011

11000111

П р и м е ч а н и е - Напишите  программу  для  настройки порта  С на ввод/вывод и пересылки в него заданного числа.

Исследуйте состояние регистров PORTC и W, для этого создайте окно наблюдения командами WindowWatch WindowNew Watch Window. Напечатайте в поле редактирования символ P и из предложенного программой списка выберите строку PORTC. Нажмите кнопку Properties и выберите двоичный формат вывода чисел. Далее нажмите кнопку Add. В результате будет создано новое окно наблюдения с именем Watch1. Теперь напечатайте в поле редактирования W и из предложенного списка выберите W, нажмите на кнопку Add. Повторите все для регистра Status и затем закройте окно кнопкой Close. Второй раз нажимать на кнопку Properties не требуется, если не надо менять формат вывода числа.

Повторите программу в пошаговом режиме и запишите изменения состояния регистров Status, PORTC и W, показываемые  в созданном окне Watch1,  на бумаге рядом с инструкциями программы.

Внимание! Далее во всех лабораторных работах создавайте окно наблюдения за всеми регистрами, примененными в программе.

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

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

2.        Зачем и как в проекте нужно создавать окно наблюдения?

3.        Назначение кнопки Properties при создании окна наблюдения.

4.        Как инициализировать разряды регистра PORTC на ввод и вывод?

5.        Назначение инструкции BSF.

6.        Назначение инструкции BCF.

7.        Как, без инструкции CLRF  STATUS, перейти в нулевой банк?

8.        Расскажите о символьных именах.

9.        Поясните выражения «бит очищен» и «бит установлен».

 

4 Лабораторная работа 4. Сложение, вычитание. Логика

 

 Цель работы: изучение инструкций ADDWF, ANDWF IORWF XORWF, SUBWF. Выполнение сложения, вычитания, применение логических функций.

Изучите формат инструкций ADDWF, SUBWF, ANDWF, IORWF, XORWF по приложению Г.

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

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

Логическая функция ‘ИЛИ’ (‘OR’) применяется для включения оборудования любой из двух кнопок. Например, запуск обогревателя кнопками, расположенными в разных местах помещения.

Логическая функция ‘И’ (‘AND’) применяется для включения оборудования только в том случае, если включены оба контакта. Например, освещение в помещении автоматически включается при низкой освещенности и наличия в нем людей.

Логическая функция ‘Исключительно ИЛИ’ (‘XOR’) применяется для включения оборудования только в тех случаях, когда переключатели Х1 и Х2 находятся в разных положениях, причем оба переключателя имеют два контакта: нормально замкнутый и нормально разомкнутый. С помощью схемы по этой функции можно управлять, например,  освещением длинного тоннеля. С любого конца тоннеля можно включить или выключить освещение.

 


 

Таблица 4.1 –Логические функции Y=f(X1,X2)

Инструк-
ция

Таблица истинности

Условное обозначение

Интерпретация на электрической схеме

Х1

Х2

Y

IORWF
Функция ИЛИ

 

 

 

0

0

1

1

0

1

0

1

0

1

1

1

 

Х1

                 Y

 

Х2

              Х1

 

              Х2

 

При замыкании любого контакта в цепи будет ток

ANDWF Функция ИЛИ

 

0

0

1

1

0

1

0

1

0

0

0

1

 

Х1

                  Y

 

Х2

               X1          X2

 

 

 

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

XORWF Функция Исключи-
тельно ИЛИ

 

0

0

1

1

0

1

0

1

0

1

1

0

 

 

Х1

                 Y

Х2

           X1          X2

 

           X2          X1

 

Ток в цепи будет только тогда, когда переключатели X1 и X2 будут в разном положении

Изучите программу 4.1, которая выводит результаты работы разных логических функций с  двумя константами FAh и 02h  в порт С.

Внимание! Перед шестнадцатеричным числом, начинающимся с буквы, например, FAh, в тексте программы пишется нуль. Это делается для того, чтобы отличить число от символьного имени или инструкции, которые всегда начинаются с буквы.

Программа 4.1 выполняет контроль наличия оборудования на складе при его поступлении и выдачи инструкциями SUBWF и ADDWF. С помощью логических функций выполняется запрет или разрешение подачи энергии по различным фидерам.

    include <p16F877.inc>

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

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

org     0x000

nop

nop

nop

org     05h

START                                 ; Начало исполняемой части программы.

          CLRF   STATUS        ; Очистка регистра, выбор банка 0.

          BSF   STATUS, 5        ; Выбор банка ‘1’.

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

          CLRF   STATUS         ; Возврат в банк ‘0’.

CLRF  PORTC            ; Записать в PORTC нули (потушить светодиоды).

          MOVLW   B‘11111010’ ; Запись константы FAh в W.

          MOVWF   R2                 ; Запись константы FAh в регистр R2.

          MOVLW   B‘00000010’ ; Запись константы 02h в W.

          MOVWF   R1                 ; Запись константы 02h в регистр R1.

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

          MOVWF   PORTC    ; Загрузить содержимое W в регистр PORTС.

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

          ADDWF   R1, 0    ; Сложение R1+ W (R2). Результат оставляем в W.

          MOVWF   PORTC    ; Переслать содержимое W в регистр PORTС

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

          ANDWF   R1, 0    ; Логическое умножение R1 AND W(R2), результат                                          ; оставляем в W.

          MOVWF   PORTC    ; Загрузить содержимое W в порт С.

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

Введите описанную программу в микроконтроллер.

Внимание! Не забывайте создавать окно наблюдения для всех применяемых в программе регистров в необходимом формате чисел.

 
Таблица 4.1- Результаты работы программы

Двоичные числа на входе

Инструкция

Числа на выходе

в порте С

R1

R2

Форма b

Форма h

11111010

00000010

ADDWF (R1+W(R2))

11111100

FС

11111010

00000010

SUBWF (R1-W(R2))

11111000

F8

11111010

00000010

ANDWF(R1 and W(R2)

00000010

02

11111010

00000010

IORWF (R1 or W(R2))

11111010

FA

11111010

00000010

XORWF (R1 xor W(R2))

11111000

F8

Подготовьте программу для ввода в микроконтроллер по заданию из таблицы 4.2, выполняющую указанные в таблице 4.1 инструкции.

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

Вари-
ант

Число R1

Число R2

Вари-
ант

Число R1

Число R2

1

00000001

00010000

6

00000110

01100000

2

00000010

00100000

7

00000111

01110000

3

00000011

00110000

8

00001000

10000000

4

00000100

01000000

9

00001001

10010000

5

00000101

01010000

10

00001010

10100000

 

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

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

2.   Что выполняет инструкция ADDWF? Когда она применяется?

3.   Что выполнят инструкция  SUBWF? Когда она применяется?

4.   Что выполняет инструкция ANDWF? Когда она применяется?

5.   Что выполняет инструкция IORWF? Когда она применяется?

6.   Что выполняет инструкция XORWF? Когда она применяется?

7.   Приведите инструкцию установки бита. Когда она применяется?

8.   Приведите инструкцию сброса бита. Когда она применяется?

 

5 Лабораторная работа 5. Операции преобразования чисел

 

 Цель работы: изучение и применение операций преобразования чисел с помощью инструкций BCF BSF COMF SWAPF RRF RLF.

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

Операция инверсии COM может применяться для одновременного изменения управляющих сигналов через определенные промежутки времени.

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

Инструкции сдвига (RRF, RLF) используются при выполнении операций умножения и деления, при последовательной передаче данных нескольким объектам и для других целей. Они могут применяться при управлении протяженным оборудованием. Например, при окрашивании, охлаждении или нагреве деталей во время их движения на конвейере.

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

Во фрагменте программы 5.1 показано применение операций инверсии, очистки бита, обмена полубайтами и сдвига вправо. Назначение операций описано выше. Предполагается, что порт С настроен на вывод. Разберитесь зачем в бит С регистра status был записан нуль перед сдвигом вправо.

Фрагмент программы 5.1.

          MOVLW   B'11110000'  ; Запись константы в аккумулятор W.

          MOVWF   PORTC        ; Копирование константы из W в PORTC.

COMF   PORTC, 1        ; Инвертирование порта С.

          MOVWF   PORTC        ; Копирование константы из W в порт С.

          BCF    PORTC, 7           ; Сброс седьмого бита порта С.

          MOVWF   PORTC        ; Копирование константы из W в порт С.

          SWAPF   PORTC, 1      ; Обмен полубайтами порта С.

          BCF    STATUS, 0                   ; Запись нуля в бит С регистра status для                                                                   ; правильного выполнения сдвига.

          MOVWF   PORTC        ; Копирование константы из W в порт С.

RRF   PORTC, 1  ; Сдвиг вправо.  Результат записываем в порт С.

RRF PORTC, 1    ; Сдвиг вправо.  Результат записываем в порт С.

RRF   PORTC, 1  ; Сдвиг вправо.  Результат записываем в порт С.

 

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

Оформите фрагмент 5.1 как программу и введите ее в микроконтроллер.

Внимание! Не забывайте создавать окно наблюдения для всех регистров в необходимом формате чисел.

Сравните полученные результаты с данными в таблице 5.1.

Таблица 5.1- Результаты работы инструкций

Числа на входе

Инструкция

Числа на выходе

в порте С

Форма b

Форма h

Форма b

Форма h

11110000

F0

COMF

00001111

0F

11110000

F0

BCF (7-й бит)

01110000

70

11110000

F0

BSF  (3-й бит)

11111000

F8

11110000

F0

SWAP

00001111

0F

11110000

11100001

11000011

F0

E1

С2

RLF

RLF

RLF

11100001

11000011

10000111

E1

С2

87

11110000

01111000

00111100

F0

78

3C

RRF

RRF

RRF

01111000

00111100

00011110

78

3C

1E

11110000

F0

BCF (7-й бит)

01110000

70

11110000

F0

BSF (1-й бит)

11110010

72

 

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

Варианты

Заданные значения входного числа

Выключе-ние бита

Включе-ние бита

Варианты

Заданные значения входного числа

Выключе-ние бита

Включе-ние бита

1

12

1

0

6

67

2

3

2

23

1

2

7

78

3

0

3

34

2

3

8

89

3

1

4

45

1

2

9

1

2

5

56

2

3

10

АВ

3

2

 

Подготовьте программу для ввода в микроконтроллер по заданию из таблицы 5.2, в которой выполняются указанные ниже действия:

а) напишите строки, использующую инверсию, так, чтобы светодиоды, подключенные к регистру PORTC, зажигались на ‘0’ и не зажигались на ‘1’, записанные в разрядах исходного числа;

б) напишите строки, которые при любом исходном числе выполняют:

1)        выключение заданного светодиода, используя инструкцию BCF;

2)        зажигают заданный светодиод, используя инструкцию BSF;

в) напишите строки, которые меняют полубайты местами;

г) напишите строки, которые преобразуют исходные числа c помощью операций сдвига. Сдвиг выполните три раза.

Запустите подготовленную по заданию 5.2 программу. Результаты работы всех операций с числами запишите в таблицу 5.1.

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

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

2.        Почему для записи чисел использованы адреса начиная с 20h?

3.        Приведите инструкцию установки бита. Когда она применяется?

4.        Приведите инструкцию сброса бита. Когда она применяется?

5.        Как происходит сдвиг вправо (влево). Какой бит регистра status меняется при выполнении операции сдвига?

6.        Расскажите о применении операции сдвига.

7.        Расскажите об операции «инверсия» и ее применении.

8.        Расскажите об операции «обмен полубайтами» и ее применении.

 

6 Лабораторная работа  6. Сравнение чисел

 

Цель работы: использование флагов регистра status для сравнения чисел. Изучение инструкций условных переходов BTFSC и BTFSS.

Инструкции условных переходов BTFSC и BTFSS проверяют состояние заданного бита в любом регистре и в зависимости от результата, пропускают или не пропускают следующую инструкцию программы. Инструкция BTFSC пропускает следующую инструкцию, если заданный бит сброшен.  Инструкция BTFSS пропускает следующую инструкцию, если заданный бит установлен. На основе этого создается передача управления в другое место программы и организация циклов.

Использование бита CARRY (C)

BTFSS  STATUS, C    

Если в бите С установлена единица, то пропускается следующая инструкция программы GOTO МЕТКА и сразу выполняется инструкция MOVWF  R2

GOTO METKA

MOVWF  R2

Если  бит C сброшен, то выполняется следующая инструкция программы  GOTO METKA

Использование бита ZERO (Z)

BTFSS  STATUS, Z

Если в бите Z установлена единица, то пропускается следующая инструкция программы MOVF  R2 и сразу выполняется инструкция MOVWF  PORTC

MOVF  R2, 0

MOVWF  PORTC

Если  бит Z сброшен, то выполняется следующая инструкция программы  MOVF  R2, 0

В реальных программах вместо указанных инструкций пишутся инструкции, согласно разработанному алгоритму.

В ассемблере отсутствуют инструкции сравнения чисел, поэтому, чтобы определить, какое из чисел больше (меньше), применяют следующий алгоритм:

1. Выполняют вычитание чисел. При этом в зависимости от результата, изменяются флаги регистра status, см. таблицу 6.1.

2. Далее применяют инструкции условных переходов.

 

Т а б л и ц а  6.1 – Значения флагов регистра status при вычитании

Соотношения значений в рабочем регистре W и регистре общего назначения (UMENSH)

Значения флагов status

Z

DC

C

UMENSH>W   (положительный результат)

0

1

1

UMENSH<W  (отрицательный результат)

0

0

0

UMENSH=W (нулевой результат)

1

1

1

П р и м е ч а н и е – В регистр UMENSH помещается уменьшаемое

Задача. Две установки потребляют разное количество электроэнергии. Требуется определить, энергопотребление меньшей установки. Решение приведено во фрагменте 6.1. В нем используется значение бита С для вывода меньшего числа на светодиоды.

Фрагмент 6.1.

MOVLW  h’4С’           ; h’4С’à W

MOVWF   R1               ; h’4С’à R1

MOVWF  UMENSH     ;W àUMENSH

MOVLW   h’3С’          ; h’3С’àW

MOVWF  R2                ; W à R2

SUBWF   UMENSH, 1 ; UMENSH=

                                     ; UMENSH – W=

                                     ; = R1 – R2

BTFSS  STATUS, C    ; C = 1?

MOVF  R1, 0                ; R1 à W

MOVWF  PORTC        ; W à PORTC

 

Выполните проект по 6.1, результаты сравните с таблицей 6.2.

 

Таблица 6.2 - Результаты сравнения чисел

Числа на входе

Алгоритм

Числа на выходе

R2

R1

Форма b

Форма h

00111100

01001100

Сравнение чисел и вывод меньшего числа

01001100

00111100

00111100

Определение равенства чисел

00000000

00

 

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

-       сравнение чисел, расположенных в разных регистрах. Большее число выводится на светодиоды;

-       сравнение одинаковых чисел R1 и R1. Если числа равны в порт с выводится 1 в младшем разряде.

При написании программы используйте блок-схему на рисунке 6.1.

Рекомендация. При написании программы создайте символьные переменные для хранения заданных чисел.

Т а б л и ц а  6.3 - Варианты заданий

Вари-
ант

Число R1

Число R2

Вари-
ант

Число R1

Число R2

1

00111100

00001111

6

11100001

00110011

2

01100111

11110000

7

11001111

00111011

3

00011110

00111100

8

10010110

01101010

4

11110000

10101010

9

01110110

00101011

5

11000011

01010101

10

01100001

00111011

 

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

1.        Какие разряды регистра status меняют свои значения при логических и математических операциях?

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

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

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

5.        Какой логической операцией можно очистить несколько разрядов?

6.        Какой логической операцией можно установить несколько разрядов?

7.        Какой логической операцией можно определить равенство чисел?

8.        В каких случаях флаг Z равен единице при вычитании?

9.        В каких случаях флаг С  равен единице при вычитании?

10.   Когда флаги  Z и С  регистра STATUS одновременно равны нулю?


7 Лабораторная работа  7. Суммирование значений массива

 

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

Суммирование применяется для различных целей: подсчета количества поступивших изделий, определение средней температуры за расчетный период времени и других.

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

Организация программ с косвенной адресацией для суммирования приведена во фрагменте 7.1. Регистр FSR хранит адрес ячейки, к которой происходит обращение через имя формально существующего регистра INDF. Инструкция INCF увеличивает значение регистра на единицу.

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

Фрагмент  программы 7.1 предназначен для сложения массива чисел, расположенных в регистрах по адресам 4Сh…4Fh. В программе для проверки окончания массива используется адрес следующего регистра 50h.

Фрагмент 7.1. Суммирование массива.

REGEQU h’4C’                   ; Первый регистр массива.

………….             ; Во все регистры массива запишем далее число 11.

MOVLW REG1    ; Запись адреса первого регистра массива
; с символьным именем REG1 в регистр W.

MOVWF FSR   ; Запись в регистр FSR адреса первого регистра массива.

CLRF W           ; Очистка рабочего регистра W перед  суммированием.

NEXT                             ; Метка для организации цикла.

          ADDWF  INDF, 0 ; Сложение значения регистра W и регистра, адрес
                                      ; которого записан в регистре
FSR.

; с сохранением результата в рабочем регистре W.

          INCF   FSR, 1      ; Увеличение значения адреса в FSR на единицу.

          BTFSS  FSR, 4     ; Проверка – выполнено? Дошли до адреса 50h?

          GOTO    NEXT     ; Если нет, то переходим на метку NEXT,

          MOVWF  PORTC          ; если да, то выводим сумму на светодиоды.

Чтобы определить в каком бите следует проверять появление ‘1’, рекомендуется все адреса регистров записать в двоичной форме в таблицу 7.1.

Т а б л и ц а 7.1 - Адреса

Форма ‘h’

Форма ‘b’

4D

01001101

4E

01001110

4F

01001111

50

01010000

Результаты работы программы записаны в таблице 7.2.

Аналогично пишется программа для очистки массива информации в оперативной памяти.

          Используя приведенный фрагмент, подготовьте программу по варианту из таблицы 7.3, выполняющую сложение  указанных регистров. Результаты занесите в таблицу 7.2.

Т а б л и ц а  7.2– Результаты суммирования массива

Вариант

Адрес регистра массива, указываемый в FSR

Число в регистре массива

Сумма в регистре W

Форма h

Форма В

Форма h

Форма В

11

4C

01001100

0Bh

0Bh

00001011

11

4D

01001101

0Bh

16h

00010110

11

4E

01001110

0Bh

21h

00100001

11

4F

01001111

0Bh

2Ch

00101100

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

Вариант

Адреса регистров массивов

Вариант

Адреса регистров массивов

1

20h - 23h

6

34h - 37h 

2

24h - 27h

7

40h - 43h

3

28h -2Bh

8

44h - 47h

4

2Ch -2Fh

9

54h - 57h

5

 30h -33h

10

60h – 63h

 

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

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

2.        Какие разряды регистра status меняют свои значения при логических и математических операциях?

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

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

5.        Какую функцию используют, чтобы очистить один разряд?

6.        Какую логическую операцию надо использовать, чтобы установить бит в одном разряде?

7.        Когда флаг Z регистра STATUS обнуляется?

8.        Когда флаг C регистра STATUS обнуляется?

9.        Когда флаги  Z и С  регистра STATUS одновременно равны нулю?

10.   С какой целью подсчитывают сумму чисел в массиве?

 

8 Лабораторная работа 8. Маскирование

 

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

При маскировании выполняется побитные логические операции исходного числа и маски с целью одновременного изменения нескольких разрядов исходного числа или проверки равенства чисел. Изменение значений нескольких разрядов применяется для тех же целей, которые описаны в предыдущих лабораторных работах при применении инструкций BSF, BCF, изменения значений регистра TRISC и так далее.

Правила маскирования с помощью логических функций:

-     логическое умножение (AND) очищает те разряды исходного числа, которые в маске имеют значение нуль;

-     логическое сложение (OR) устанавливает в те разряды исходного числа  1, в которых в маске записана единица;

-     логическое «исключающее ИЛИ» (XOR) записывает в те биты исходного числа, которые в маске имеют совпадающее значение, нули. Если биты в маске и в исходном числе разные, то записывается единица. Функция часто применяется для определения равенства исходного числа числу, записанному в маске. Эта функция может потребоваться при определении заданной температуры при нагревании детали или определении достигнутого заданного количества изделий при их пересчете.

          Примеры результатов маскирования приведены в таблице 8.1.

 

 Т а б л и ц а 8.1 –Применение масок и проверка на равенство

Объекты

Операция

OR

(установка бит)

AND

(очистка бит)

XOR

 

XOR

 

Число

10101010

10101010

10101010

10101010

Маска

11110000

11110000

11110000

10101010

Результат

11111010

10100000

01011010

00000000

 

Решение задачи запрета подачи энергии по некоторым фидерам или разрешение подачи может быть выполнено с помощью маскирования с применением логических функций AND и OR. Проверка равенства температуры заданному значению – с помощью логической операции XOR.

Изучите приемы маскирования с помощью логических функций, по фрагментам 8.1, 8.2, 8.3.

 

Фрагмент 8.1. Установка четырех бит путем логического сложения.

MOVLW  B’10101010’    ; Загрузить константу ААh в регистр W.

MOVWF   PORTC         ; Переслать константу в порт С.

MOVLW     B’11110000’ ; Установить маску в регистр W.

IORWF  PORTC, 1          ; Установить биты в PORTC с 4 по 7 разряды.

 

Фрагмент 8.2. Сброс четырех бит путем логического умножения.

MOVLW   B’10101010’  ; Загрузить константу ААh в регистр W.

MOVWF   PORTC         ; Переслать константу в порт С.

MOVLW   B’11110000’  ; Установить маску в регистре W.

ANDWF      PORTC, 1   ; Очистить биты в PORTC с 0 по 3 разряды.

 

Фрагмент 8.3.  Процедура определения равенства чисел.

MOVLW     0ААh          ; Загрузить ААh в регистр W.

MOVWF     REG1                   ; Загрузить ААh из W в REG1 .

XORWF     REG1, 0      ; Применяем логическую операцию и
 ;  результат записываем в W.

MOVWF  PORTC         ; Проверяем светодиодами результат в порте С,
                                                ; светодиоды не должны светиться.

 

Подготовьте программу, выполняющую маскирование для варианта из таблицы 8.2. Запишите результаты в таблицу 8.1.

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

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

Вариант

Число

Маска

Вариант

Число

Маска

1

10110011

11000001

6

00111001

11100110

2

10011111

00110010

7

11011100

01101100

3

10101001

01110011

8

10001110

01001111

4

01110111

01010100

9

00111001

00110001

5

01101101

10100101

10

01110101

10010111

 

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

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

2.        Какой логической функцией очищают определенные разряды числа?

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

4.        Какой логической функцией определяют равенство чисел?

5.        Какие способы адресации вы знаете?

6.        Как при косвенной адресации устанавливается номер банка?

7.        С какой целью применяют логическую операцию ИЛИ?

8.        С какой целью применяют логическую операцию И?

9.        Зачем применяют логическую операцию Исключительно ИЛИ?

10.   С какой целью сравнивают числа?

 

9 Лабораторная работа 9. Ввод данных с клавиатуры.

 

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

Клавиатура используется в реальных программах для ввода данных, инструкций, изменения алгоритма вычислений. В лабораторной работе с клавиатуры будем подавать напряжение (сигнал’1’) в порт D, без применения дополнительного источника питания. Сигнал будет обработан микропроцессором, и в PORTC будет выведен результат работы программы.

Изучите принципиальную схему подключения пленочной клавиатуры (рисунок 9.1), изображенную на лицевой панели стенда.

 Здесь в виде контактов изображены кнопки клавиатуры. На рисунке 9.2 приведена, в качестве примера, монтажная схема подключения кнопки с цифрой «1» к порту D. Одна клемма кнопки «1» подключена к выводу RD7, а вторая клемма кнопки «1» подключена к выводу RD3. Предположим, что бит RD7 запрограммирован на вывод, а бит RD3 - на ввод. Когда кнопка нажата, с выходного бита RD7 проходит сигнал через кнопку «1» на клемму RD3, запрограммированную на ввод.

          При составлении программы 9.1 решалась следующая задача: при поступлении аварийного сигнала с датчика, должна включиться сирена, подключенная к фидеру 7. Кнопка «1» в программе имитирует датчик, светодиод имитирует сирену. Изучите программу, выполняющую описанные действия и демонстрирующую зажигание светодиода, подключенного к выводу RC6.


Фрагмент 9.1. Программирование клавиатуры.

START

          CLRF            STATUS              ; Очищаем регистр STATUS.

          BSF   STATUS,  5                      ; Выбираем банк ‘1’.

          MOVLW     B’00001111’  ; Константа для инициализации порта D.

MOVWF TRISD                ; Инициализируем биты RD0 - RD3 на ввод,
               :  остальные клеммы порта D (RD4 -  RD7)  на вывод.

          CLRF          TRISC        ; Инициализируем PORTC на вывод.

          CLRF              STATUS          ; Выбираем банк ‘0’.

          CLRF          PORTD                ; Очищаем  регистр PORTD.

          CLRF          PORTC                ; Очищаем  регистр PORTC.

          MOVLW     B’10000000’        

MOVWF   PORTD      ; Записываем 1 в бит RD7, настроенного  на вывод,

                                            ; т.е. подаем напряжение на кнопку «1».

VKLUCH

BTFSS        PORTD, 3  ; Проверяем появилась ли ‘1’ на клемме RD3,
                                         ; настроенной на ввод, то есть нажата ли кнопка «1»,

          GOTO VKLUCH     ; если нет, то повторяем проверку

MOVLW     B’01000000’ ; если кнопка нажата, то зажигаем светодиод,
                                           ; подключенный к клемме RC6.

          MOVWF     PORTC

END

Напишите программу включения светодиодов кнопкой  на основе фрагмента 9.1 для задания из таблицы 9.1. Кнопка зажигания светодиодов должна включать набор светодиодов, имитирующий номер варианта.

          Дополните программу 9.1 строками для инвертирования светодиодов при нажатии указанной в задании кнопки. Создайте в программе бесконечный цикл включения и инвертирования светодиодов. Продемонстрируйте работу преподавателю.

Т а б л и ц а 9.1- Варианты заданий 

Вариант

Кнопка зажигания светодиодов

Кнопка инвертирования светодиодов

Вариант

Кнопка зажигания светодиодов

Кнопка инвертирования светодиодов

1

«0»

«5»

6

«6»

«2»

2

«2»

«6»

7

«7»

«3»

3

«3»

«7»

8

«8»

«4»

4

«4»

«8»

9

«9»

«6»

5

«5»

«1»

10

«1»

«7»

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

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

2.        Назначение клавиатуры.

3.        Зачем разряды порта D настраивают на ввод и на вывод?

4.        Как инициализируется порт D?

5.        Как проверяется нажатие кнопки?

6.        Почему каждая кнопка не имеет отдельных клемм?

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

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

9.        Как настроить порт D, чтобы подключить кнопки «1» и «5»?

10.   Как настроить порт D, чтобы подключить кнопки «4» и «5»?


10 Лабораторная работа  10. Подпрограммы

 

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

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

Сначала счетчику T_in в подпрограмме задаем какое-то значение В. Затем значение счетчика T_in с тактовой частотой микропроцессора по инструкции DECFSZ уменьшается на 1 и далее проверяется: не стало ли оно нулевым. Если значение счетчика не равно нулю, то выполняется инструкция GOTO  M_in, повторяющая цикл. Если счетчик обнулился, программа выходит из цикла уменьшения значения счетчика. Длительность задержки времени (паузы) определяется начальной величиной счетчика T_in. Поскольку микропроцессор работает с высокой частотой, приходится создавать внешний счетчик T_out для увеличения времени задержки.

Подпрограммы пишут после инструкции GOTO$ основной программы Эта инструкция разделяет основную программу и подпрограмму. Последняя  всегда начинается с имени, которое должно быть написано без пробела. Заканчивается любая подпрограмма инструкцией возврата RETURN. Подпрограмма из основной программы вызывается по имени инструкцией CALL ИМЯ. После завершения ее работы по инструкции RETURN управление передается в главную программу на следующую инструкцию после инструкции CALL  ИМЯ.

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

Следующая программа решет задачу подачи энергии, допустим нагревателям, по заданному временному графику, причем подача энергии выполняется несколько раз.

Программа 10.1. Организация циклов.

          include<p16F877.inc>

MIG        EQU  H'21'          ; Адрес счетчика цикла количества миганий.

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

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

          org 0x000          ; Выполнение программы начинается с 0-го адреса.

          nop   

          nop   

          nop

          org 10                             ; Начать с адреса 10.

START  CLRF  STATUS        ; Очистить регистр статуса.

          BSF   STATUS, 5           ; Выбираем банк ‘1’.

          CLRF   TRISC               ; Настраиваем порт С на вывод.

          CLRF   STATUS           ; Выбираем банк ’0’.

          MOVLW   H'02'             ; Записываем в W константу.

          MOVWF   MIG              ; Устанавливаем 2 мигания.

L_MIG                                     ; Метка цикла миганий.

          MOVLW   H'FF'            ; Записываем в W константу.

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

          CALL   TIME_Z1           ; Вызываем подпрограмму задержки.

          CLRF   PORTC             ; Тушим все светодиоды.

          CALL   TIME_Z2           ; Вызываем подпрограмму задержки.

          DECFSZ   MIG,1    ; Уменьшаем значение счетчика MIG на 1,

          GOTO   L_MIG      ; если он станет равным нулю пропускаем GOTO.

          MOVLW    H'FF'

          MOVWF   PORTC ; Зажигаем светодиоды. Сигнал конца программы.

          GOTO $                 ; Обозначение окончания главной программы.

;  Подпрограмма задержки TIME_Z1.

TIME_Z1

          MOVLW   H'02'

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

M_OUT                                 ; Метка внешнего счетчика.

          MOVLW   H'03'

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

M_IN                                   ; Метка внутреннего счетчика.

          DECFSZ   T_IN,1         ; Уменьшаем значение счетчика T_IN   на 1,

          GOTO   M_IN               ; если оно будет равен нулю пропускаем GOTO.

          DECFSZ   T_OUT, 1    ; Уменьшаем значение счетчика T_OUT  на 1,

          GOTO   M_OUT           ; если оно равно нулю пропускаем GOTO.

          RETURN                      ; Конец подпрограммы TIME_Z1.

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

          Примечание – Подпрограмма TIME_Z2 не приведена.

Разработайте программу, включающую и выключающую светодиоды на заданное время, согласно варианту задания из таблицы 10.2.

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

Вариант

Время включения светодиодов, сек

Время выключения светодиодов, сек

Вариант

Время включения светодиодов, сек

Время выключения светодиодов, сек

1

0,5

5

6

3

2,5

2

1

4,5

7

3,5

2

3

1,5

4

8

4

1,5

4

2

3,5

9

4,5

1

5

2,5

3

10

5

0,5

П р и м е ч а н и е – Программа  варианта  должна  зажигать  светодиоды, имитирующие номер варианта в двоичной системе

Введите разработанную программу  в микроконтроллер. Установите минимальные значения для счетчиков равные 2. После отладки программы в пошаговом режиме, установите количество миганий равное 10, средние значения счетчиков и запустите ее в автоматическом режиме. Настройте заданное время горения светодиодов и время паузы. Для увеличения времени задержки добавьте в циклы дополнительные бесполезные инструкции. Возможно, что вам потребуется создать два вложенных цикла.

Результаты занесите в таблицу 10.3. Продемонстрируйте работу программы преподавателю.

Т а б л и ц а  10.3– Результаты настройки циклов задержки

Вариант

Параметры подпрограммы включения светодиодов

Параметры подпрограммы выключения светодиодов

Время включения светодиодов, сек

Значение счетчика

Время выключения светодиодов, сек

Значение счетчика  

T_1

T_2

T_3

T_4

T_5

T_6

 

 

 

 

 

 

 

 

 

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

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

2.   Какие числа нужно записать в счетчики циклов, чтобы получить максимальную и минимальную задержку?

3.   Назначение подпрограмм.

4.   Цикл, вложенный цикл.

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

6.   По какой инструкции происходит возврат в основную программу?

7.   Опишите работу инструкции DECFSZ .


Приложение А


Описание УМК-7 и  MPLAB

На передней панели стенда (рисунок А.1) расположены:

1 - микроконтроллер PIC16F877;

2 - ряд клемм, соединенных с выводами PIC16F877;

3 - ряд клемм ,соединенных с выводами внешних устройств;

4 –источник звука;

5 –источник аналогового сигнала;

6 –панель светодиодов;

7 - жидкокристаллический индикатор;

8 - клавиатура.

Микроконтроллер с внешними устройствами соединяется перемычками.

MPLAB-ICD – оценочный комплект для микроконтроллеров серии PIC16F87X. В нем используется возможность внутрисхемной отладки (ICD), встроенной в кристаллы PIC16F87X и протокол внутрисхемного программирования фирмы Microchip. Внутрисхемная отладка встроена в кристаллы PIC16F87X. MPLAB-ICD одновременно является программатором и внутрисхемным отладчиком, поскольку он подключается к отлаживаемому устройству и работает как микроконтроллер PIC16F87X. Комплект MPLAB-ICD предназначен для отладки кода в лабораторных условиях.

MPLAB-ICD поддерживает:

-     пошаговое выполнение кода в реальном масштабе времени;

-     точки останова (break points);

-     внутрисхемную отладку;

-     встроенное программирование;

-     отладку по исходному коду и символическим именам;

-     RS-232 интерфейс.

          Технические данные микроконтроллера:

-     диапазон выходных рабочих напряжений от 3.0 V до 5.5 V;

-     рабочие частоты от 32 кГц до 20 МГц.


Приложение Б

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

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

Т а б л и ц а Д.1 – Соответствие чисел в различных системах счислений

Десятичная система

Двоичная система

Восьмеричная система

Шестнадцатеричная система

0

0000

0

0

1

0001

1

1

2

0010

2

2

3

0011

3

3

4

0100

4

4

5

0101

5

5

6

0110

6

6

7

0111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

A

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

16

10000

20

10

17

10001

21

11

В таблице в двоичной системе слева приписаны не значащие нули.

Алгоритмы перевода чисел из двоичной системы в шестнадцатеричную и наоборот.

Перевод чисел из двоичной системы в шестнадцатеричную систему

Двоичное число разбиваем на четверки чисел справа налево. Для каждой четверки записываем его эквивалент из приведенной выше таблицы.
Пример перевода: 0101 1011 11012 = 5ВD16.

Обратный перевод чисел очевиден, необходимо только аккуратно писать именно четверки двоичных чисел, дописывая при необходимости нули слева: 1116.= 100012, 1216 = 100102.

Пример перевода: 215С16==0010 0001 0101 11002=10 0001 0101 11002.


 Приложение В

Карта памяти микроконтроллера PIC16877


Приложение Г

Регистр status

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

Т а б л и ц а  Г.1 – Биты регистра status

Номера бит

7

6

5

4

3

2

1

0

Имена бит

IRP

RP1

RP0

-TO

-PD

Z

DC

C

 

В таблице Г.1 приведены стандартные обозначения:

-     IRP бит выбора банка при косвенной адресации (IRP=1 - выбор банка 2 или банка 3, IRP=0 - выбор банка 0 или 1);

-     RP1, RP0 (5 и 6 разряды) биты выбора банка при непосредственной адресации. Соответствие значений бит и банков показаны в таблице Г.2;

-     TO флаг переполнения сторожевого таймера;

-     PD  флаг включения питания;

-     Z флаг нулевого результата. Записывается “1” при нулевом результате арифметической или логической операции;

-     DC флаг десятичного переноса или заема. Записывается “1”, если был перенос из младшего полубайта, для инструкций сложения и вычитания в двоично-десятичной системе. Заем имеет инверсное значение ‘0’;

-     C флаг переноса или заема. Записывается “1”, если был перенос единицы в старший бит для инструкций сложения. Заем при вычитании имеет инверсное значение.

Т а б л и ц а  Г.2 – Выбор номера банка

RP1 (6 разряд)

RP0 (5 разряд)

Номер банка

0

0

0

0

1

1

1

0

2

1

1

3

 

К отдельному биту регистра можно обращаться по имени или по номеру. Инструкция BTFSC STATUS, Z  эквивалентна инструкции BTFSC STATUS, 2.

Значения бит регистра status после очистки представлены в таблице Г.3.

Т а б л и ц а Г.3 – Значения разрядов регистра status после инструкции CLRF

Имя

IRP

RP1

RP0

-TO

-PD

Z

DC

C

Разряд

7

6

5

4

3

2

1

0

Значение

0

0

0

1

1

1

1

1


Приложение Д

Описание некоторых инструкций микроконтроллера PIC

 

Константа в инструкциях представлена символом k. В описании инструкций указаны флаги, которые могут измениться при ее выполнении. Параметр d (dest) в инструкциях определяет, в какой регистр записывается результат. Если d=0 или отсутствует, результат сохраняется в регистре W. Если d=1, результат сохраняется в регистре f.

 

ADDLW - Сложить k с W

Синтаксис: [label]   ADDLW     k

Операнды:         0£k£255

Операция:     (W) + k à (W)

Изменяемые флаги:     С, DC, Z

 

ADDWF - Сложение W и f

Синтаксис: [labelADDWF   f, d

Операнды: 0£f£127

Операция: (W) + (f) à (dest)

Изменяемые флаги: C, DC, Z

 

ANDLW  Побитное 'И' k и W

Синтаксис: [label]    ANDLW  k

Операнды: 0£k£255

Операция: (W) .AND. k à (W)

Изменяемые флаги: Z

 

ANDWF - Побитное 'И’ W и f

Синтаксис: [labelANDWF   f, d

Операнды: 0£f£127

Операция: (W) .AND. (f) à (dest)

Изменяемые флаги: Z

 

BCF - Очистить бит b в регистре f

Синтаксис: [labelBCF   f, b

Операнды: 0£f£127;   0£b£7

Операция: 0 à (f<b>)

Изменяемые флаги: Нет

 

BSF - Установить бит b в регистре f

Синтаксис: [label]   BSF    f, b

Операнды: 0£f£127;   0£b£7

Операция: 1àf<b>

Изменяемые флаги: Нет

 

BTFSC  -  Проверить бит b в регистре f, пропустить следующую инструкцию, если b=0

Синтаксис: [label]    BTFSC    f, b

Операнды: 0£f£127; 0£b£7

Изменяемые флаги: Нет

Описание: Если бит b в регистре f равен 0, то следующая инструкция программы пропускается.

 

BTFSS  - Проверить бит b в регистре f, пропустить, если b = 1

Синтаксис: [label]   BTFSS      f, b

Операнды: 0£f£127;  0£b£7

Изменяемые флаги: Нет

Описание: Если бит b в регистре f равен ‘1’, то следующая инструкция программы пропускается.

 

CALL   Вызов подпрограммы

Синтаксис: [label]     CALL     f

 

CLRF   - Очистить f

Синтаксис: [label]   CLRF f

Операнды: 0£f£127

Операция: 00h à (f); 1 àZ

Изменяемые флаги: Z

Описание: Очистить содержимое регистра f и установить флаг Z=1.

 

COMF -   Инвертировать f

Синтаксис: [label]    COMF      f, d

Операнды: 0£f£127

Операция: (-f) à (dest)

Изменяемые флаги: Z

Описание: Инвертировать все биты в регистре f.

 

DECF - Вычесть 1 из регистра f

Синтаксис: [label]     DECF   f, d

Операнды: 0£f£127

Операция: (f) - 1 à (dest)

Изменяемые флаги: Z

 

DECFSZ - Вычесть 1 из f и пропустить, если f=0

Синтаксис: [label]     DECFSZ    f, d

Операнды: 0£f£127

Операция: (f) -1 à (dest)

Изменяемые флаги: Нет

Описание: Декрементировать содержимое регистра f. Если результат равен '0', то следующая инструкция программы пропускается.

GOTO - Безусловный переход

Синтаксис:  GOTO  k

Операнды: 0£k£2047

Операция: Переход на метку

Изменяемые флаги: Нет

 

INCF - Прибавить 1 к f

Синтаксис: label]          INCF   f, d

Операнды: 0£f£127

Операция: (f) + 1 à (dest)

Изменяемые флаги: Z

 

IORLW - Побитное 'ИЛИ' K и W

Синтаксис: [label]     IORLW     k

Операнды: 0£k£255

Операция (W).OR.(k) à (W)

Изменяемые флаги: Z

 

IORWF  - Побитное 'ИЛИ'   W и f

Синтаксис: [label]    IORWF     f, d

Операнды: 0£f£ 127

Операция: (W).OR.(f) à (dest)

Изменяемые флаги: Z

 

MOVF -  Переслать f

Синтаксис: [label]     MOVF    f, d

Операнды: 0£f£127

Операция: (f) à (dest)

Изменяемые флаги: Z

Описание: Значение d=1 используется для проверки содержимого регистра f на ноль,  которое регистрируется флагом Z.

 

MOVLW - Переслать K в W

Синтаксис: [label]      MOVLW    k

Операнды: 0£k£255

Операция: kà(W)

Изменяемые флаги: Нет

Описание: В неиспользуемых битах ассемблер устанавливает '0'.

 

MOVWF - Переслать W в f

Синтаксис: [label]    MOVWF    f

Операнды: 0£f£127

Операция: (W) à (f)

Изменяемые флаги: Нет

 

NOP - Нет операции

 

RETURN Возврат из подпрограммы

Синтаксис: [label]          RETURN

Операнды: Нет

Операция: TOS à PC

Изменяемые флаги: Нет

 Описание: Возврат из подпрограммы. Вершина стека TOS загружается в счетчик инструкций PC.

 

RLF - Циклический сдвиг регистра f влево через бит C регистра STATUS

Синтаксис: [label]   RLF  f, d

Операнды: 0£f£127

Изменяемые флаги: С

Описание: Выполняется циклический сдвиг влево содержимого регистра f через бит С регистра status.


RRF - Циклический сдвиг регистра f вправо через бит C регистра status

Синтаксис: [label]   RRF      f, d

Операнды: 0£f£127

Изменяемые флаги: С

Описание: Выполняется циклический сдвиг вправо содержимого регистра f через бит С регистра status.

 


SLEEP Перейти в режим SLEEP

Синтаксис: [label]        SLEEP

Операнды: Нет

Операция: 00h à WDT;

00h à предделитель WDT;

1 à -ТО; 0 à PD

Изменяемые флаги: -ТО, -PD

Описание: Сбросить флаг включения питания -PD в '0'. Установить флаг -ТО переполнения WDT в '1'. Очистить таймер WDT и его предделитель. Перевести микроконтроллер в режим SLEEP и выключить тактовый генератор.

 

 

SUBLW - Вычесть W из K

Синтаксис: [label]   SUBLW      k

Операнды: 0£k£255

Операция: k - (W) à (W)

Изменяемые флаги: C, DC, Z

 

SUBWF - Вычесть W из f

Синтаксис: [label]   SUBWF      f, d

Операнды: 0£f£127; dÎ [0,1]

Операция: (f) –(W) à (dest)

Изменяемые флаги: C, DC, Z

 

SWAPF - Поменять местами полубайты в регистре f

Синтаксис: [label]   SWAPF    f, d

Операнды: 0£f£127

Операция: (f<3:0>) à (dest<7:4>)

Изменяемые флаги: Нет

 

XORLW- Побитное 'исключающее ИЛИ' K и W

Синтаксис: label]   XORLW    k

Операнды: 0£k£255

Операция: (W).XOR.k à (W)

Изменяемые флаги: Z

 

XORWF- Побитное 'исключающее ИЛИ'   W и f

Синтаксис: [labelXORWF   f, d

Операнды: 0£f£127

Операция: (W).XOR.(f) à (dest)

Изменяемые флаги: Z


Список литературы

1.        Сайт в Internet www.microchip.ru.

2.        Погребисский М.П. Микропроцессорные системы управления электротехническими установками. –М.: МЭИ, 2003

3.        Кохц Дитер. Измерение, управление с помощью PIC-контроллеров. Киев. Наукова думка. 2007.

4.   Заец  Н.И. Радиолюбительские конструкции на PIC. –М.: Солон, 2003.

5.        Яценков В.С. Микроконтроллеры Microchip. Практическое руководство. – 2 –е изд. испр. и дополн. – М.: Горячая линия – Телеком, 2005.

6.        Корнеев В.В., Киселев А.В. Современные  микропроцессоры –3-е изд., перераб. и доп. – СПб.:  БХВ – Петербург, 2003. - 448 с.

7.   Ульрих Б.А. Микропроцессоры PIC16x7xx. -СПб.: Наука и техника, 2002.

8.        Катцен С. PIC микроконтроллеры. Все, что необходимо вам знать. –М.: Додека, 2008.

9.        Фрунзе А.В., Фрунзе М.А. Микроконтроллеры ? Это же просто. М.: ООО ИД СКИМЕН, 2003.

10.   Таверенье К. PIC микроконтроллеры- М.: ДМК, 2002.

11.   Шмурьев В.Я. Цифровые реле защиты. – М.: НТФ Энергопрогресс, 1999.

12.   Овчаренко Н.И. Микропроцессорные комплексы релейной защиты и автоматики распределительных электрических сетей. - М.: НТФ Энергопрогресс, 1999.

13.   Дьяков А.Ф., Овчаренко Н.И. Микропроцессорная релейная защита и автоматика электроэнергетических систем. М.: - Издательство МЭИ, 2000.

 

Содержание

Введение

1 Лабораторная работа 1. Отображение чисел в ЦТ

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

3 Лабораторная работа 3. Настройка порта С. Символьные имена

4  Лабораторная работа 4. Сложение, вычитание. Логика

5 Лабораторная работа 5. Операции преобразования чисел

6 Лабораторная работа 6. Сравнение чисел

7 Лабораторная работа 7. Суммирование значений массива

8 Лабораторная работа 8. Маскирование

9 Лабораторная работа 9. Ввод данных с клавиатуры

10 Лабораторная работа 10. Подпрограммы

Приложение A

Приложение Б.

Приложение В.

Приложение Г.

Приложение Д.

Список литературы

3

4

7

12

15

18

20

23

24

26

29

32

33

34

35

36

39