Учебное пособие: Методические указания к лабораторному практикуму по курсу «Управление в технических системах»

Название: Методические указания к лабораторному практикуму по курсу «Управление в технических системах»
Раздел: Остальные рефераты
Тип: учебное пособие Скачать документ бесплатно, без SMS в архиве

А.А.Бошляков , В.И.Рубцов

Методические указания к лабораторному практикуму по курсу «Управление в технических системах» (микропроцессорные системы управления)

Рассмотрены принципы работы микропроцессорной системы управления на основе микроконтроллера PIC16F877 и этапы разработки программного обеспечения для неё.

Для студентов, изучающих курс «Управление в технических системах».

Рецензент: Нечаев Л.Д.

Введение

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

Рис.1

Изучение основ работы с микропроцессорной системой управления проводится на примере одной из наиболее производительных моделей микроконтроллеров, имеющую развитую систему модулей для связи с объектом управления, PIC16F877 фирмы Microchip. В методических указаниях использована техническая документация фирмы Microchip.

Цель работы:

1. Изучение принципов работы микроконтроллера (МК).

2. Знакомство с этапами разработки программного обеспечения МК.

Характеристика микроконтроллера PIC 16 F 877.

Характеристика вычислительного ядра МК:

· выполнено по высокоскоростной RISC технологии. Высокая производительность достигается за счет применения конвейерной архитектуры и малого числа команд (всего 35);

· тактовая частота МК составляет 20 МГц, при этом время длительности машинного цикла достигает 200 нс;

· 8Кх14 слов FLASH памяти программ;

· 368х8 байт памяти данных (ОЗУ);

· 256х8 байт EEPROM памятью данных;

· систему прерываний (14 источников).

Характеристика периферийных модулей:

· два 8-разрядных таймера/счетчика;

· один 16-разрядный таймер/счетчик с возможностью подключения внешнего резонатора;

· два модуля захват/сравнение/ШИМ:

- 16-разрядный захват (максимальная разрешающая способность 12.5 нс);

- 16-разрядный сравнение (максимальная разрешающая способность 200нс);

- 10 разрядный ШИМ;

· 8-канальное 10-разрядное АЦП;

· последовательный синхронный порт;

- ведущий/ведомый режим SPI;

- ведущий/ведомый режим I2 C;

· последовательный асинхронный приемопередатчик USART c поддержкой детектирования адреса;

· ведомый 8-разрядный параллельный порт PSP с поддержкой внешних сигналов #RD, #WR, #CS.

Аппаратная составляющая микроконтроллера

Архитектура микроконтроллера.

Архитектура МК показана на рис.2. МК можно условно разделить на две части: вычислительное ядро (серый цвет) и периферийные модули (белый цвет).

Рис.2. Архитектура МК

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

1. по ад­ресу из ПС производится выборка команды из памяти программ в РК;

2. пока дешифрируется эта команда, производится инкремент ПС на единицу и ПС адресует следующую команду;

3. когда выполнение данной команды закан­чивается, содержимое ПС выдается памяти программ и цикл повторяется.

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

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

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

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

Арифметико-логическое устройство (АЛУ) выполняет арифметические и логические операции над данными. Входные данные АЛУ в зависимости от кода операции могут находиться:

а. в регистре W;

б. либо в РК, либо в памяти данных.

Структура памяти данных показана на рис. 4.

Мультиплексор данных подключает к входу АЛУ в соответствии с кодом операции либо РК (в режиме непосредственной адресации), либо память данных (в режиме прямой и косвенной адресации).

Мультиплексор адреса в зависимости от режима адресации позволяет адресовать ячейки памяти данных либо от РК (в режиме прямой адресации), либо от регистра косвенной адресации FSR (в режиме косвенной адресации).

Биты конфигурации задают режим функционирования МК:

· сброс по включению питания (POR);

· таймер включения питания (PWRT);

· таймер запуска генератора (OSC);

· сброс по снижению напряжения питания (BOR);

· сторожевой таймер (WDT);

· режим низковольтного последовательного программирования (LVP);

· режим внутрисхемной отладки (ICD).

Организация памяти команд

Структура памяти команд показана на рис.3.

Микроконтроллеры PIC16F877 имеет 13-разрядный программный счетчик ПС, способный адресовать 8К х 14 бит памяти программ.

Адрес вектора сброса - 0000h.

Адрес вектора прерываний - 0004h.

Рис.3. Структура памяти программ и стека

Организация памяти данных

Структура памяти данных показана на рис.4.

Память данных разделена на четыре банка, которые содержат регистры общего и специального (SFR) назначения. Биты RP1 (STATUS<6>) и RP0 (STATUS<5>) предназначены для управления банками данных. В таблице 1 показано состояние управляющих битов при обращении к банкам памяти данных.

Таблица 1. Обращение к банкам памяти данных

RP1

RP0

Банк

0

0

0

0

1

1

1

0

2

1

1

3

Объем банков памяти данных до 128 байт (7Fh). В начале банка размещаются регистры специального назначения, затем регистры общего назначения выполненные как статическое ОЗУ. Все банки содержат регистры специального назначения. Часто используемые регистры специального назначения отображаться в других банках памяти. Старшие 16 байт памяти данных в банках 1, 2 и 3 отображены в банке 0.

Рис.4. Структура памяти данных

Периферийный модуль – порт ввода/вывода PORTB

Познакомимся в работой периферийных модулей МК на примере порта ввода/вывода PORTB.

PORTB - это 8-разрядный двунаправленный порт. Любой разряд порта можно конфигурировать как выход или вход. Запись "1" в соответствующие разряды регистра TRISB переводит разряды порта в режим входа; запись "0" – режим выхода.

Пример 5-2: Инициализация порта В

CLRF PORTB ; обнуление регистра выходных данных

BANKCELL TRISB ; обращение к банку, ;содержащему регистр ;TRISB.

MOVLW 0x0F ;константа для инициализации порта

MOVWF TRISB ;установка RB <3:0> как входов,

;RB <7:4> как выходы.

Все разряды PORTB могут быть подтянуты к высокому уровню внут­ренними ключами для подключения к длинным линиям связи. Включение ключей выполняется записью "0" в разряд 7 регистра OPTION (бит RBPU). Ключи выключаются при:

· программировании разряда порта как выход;

· после "Сброса".

Четыре разряда PORTB (RB7-RB4) формируют прерывание при изменении состояния. Только разряды сконфигурированные как входы могут вызывать это прерывание. Состояние сигна­лов на них сравнивается со старым значе­нием, записанным при послед­нем чтении PORTB. Несовпадение текущего состояния со старым вызывает прерывание – поднимается флаг RB1F (INTCON < 0>).

Можно сбросить флаг преры­вания в про­грамме обработки прерывания, выполнив следующие операции:

· считать PORTB, что закончит условие несоответствия;

· сбросить флажок RBIF.

Прерывание по изменению состояния и программируемое подключение разрядов к высокому уровню этих четырех контак­тов позволяет создать простой интерфейс клавиатуры.

Опрос PORTB не рекомендуется при использова­нии прерывания при изменении состояния.

RB0/INT вход внешнего источника прерываний, настраиваемых битом INTEDG (OPTION_REG<6>).

Программная составляющая микроконтроллера

Система команд микроконтроллер.

Каждая команда микроконтроллера состоит из одного 14-разрядного слова разделенного на:

· код операции, определяющий тип команды

· один или несколько операндов, определяющие операцию команды.

Полный список команд смотрите в таблице 2. Команды разделены на следующие группы:

· байтовые команды;

· битовые команды;

· команды управления и операций с константами.

На рисунке 5 показан формат команд трех основных групп.

Для байт ориентированных команд:

· 'f ' является указателем регистра и определяет - какой регистр должен использоваться в команде;

· 'd' указателем адресата результата и определяет, где будет сохранен результат.

Если 'd'=0, результат сохраняется в регистре W.

Если 'd'=1, результат сохраняется в регистре, который используется в команде.

В бит ориентированных командах:

· 'b' определяет номер бита участвующего в операции;

· 'f ' - указатель регистра, который содержит этот бит.

В командах управления или операциях с константами:

· 'k' представляет восемь или одиннадцать бит константы.

Рис. 5. Формат команд.

Все команды выполняются за один машинный цикл, кроме команд условия, в которых замещается значение программного счетчика. В случае выполнения команды за два машинных цикла, во втором цикле выполняется инструкция NOP. Один машинный цикл состоит из четырех тактов генератора. Для тактового генератора с частотой 4 МГц команда выполняется за 2 мкс.


Таблица 2. Команды микроконтроллера PIC16F877.

Мнемоника

Операция

Циклы

Код команды

Флажки

Примечание

команды

БАЙТОВЫЕ КОМАНДЫ

ADDWF f, d

Сложение (W + f->d)

1

00 0111 dfff ffff

C.DC.Z

1,2

ANDWF f, d

Логическое "И" (W and f — > d)

1

00 0101 dfff ffff

Z

1,2

CLRF f

Обнулить f

1

00 0001 1fff ffff

Z

2

CLRW -

Обнулить W

1

00 0001 0xxx xxxx

Z

COMF f, d

Дополнение f (Логическое "НЕ")

1

00 1001 dfff ffff

Z

1,2

DECF f, d

Декремент f |

1

00 0011 dfff ffff

Z

1,2

DECFSZ f, d

Декремент f, пропуск если "0"

1(2)

00 1011 dfff ffff

1,2,3

INCF f, d

Инкремент f

1

00 1010 dfff ffff

Z

1,2

INCFSZ f, d

Инкремент f, пропуск если "0"

1(2)

00 1111 dfff ffff

1,2,3

IORWF f, d

Логическое "ИЛИ" (W or f-> d)

1

00 0100 dfff ffff

Z

1,2

MOVF f, d

Пересылка (f — > W)

1

00 1000 dfff ffff

Z

1,2

MOVWF f

Пересылка (W — >f)

1

00 0000 1fff ffff

NOP

Пустая операция

1

00 0000 0xx0 0000

RLF f, d

Сдвиг влево через перенос

1

00 1101 dfff ffff

С

1,2

RRF f, d

Сдвиг вправо через перенос

1

00 1100 dfff ffff

C

1, 2

SUBWF f, d

Вычитание (f - W -> d)

1

00 0010 dfff ffff

C,DC,Z

1, 2

SWAPF f, d

Обменять полубайты f

1

00 1110 dfff ffff

1,2

XOFWF f, d

Исключающее "ИЛИ" (W or f-> d)

1

00 0110 dfff ffff

Z

1,2

БИТОВЫЕ КОМАНДЫ

BCF f. b

Обнулить бит b в f

1

01 00bb bfff ffff

1,2

BSF f, b

Установить бит b в f

1

01 0lbb bfff ffff

1,2

BTFSC f, b

Тест бита b в f, пропуск если "0"

1(2)

01 l0bb bfff ffff

3

BTFSS f, b

Тест бита b в f пропуск если "1"

1(2)

01 11bb bfff ffff

3

КОМАНДЫ С КОНСТАНТАМИ И КОМАНДЫ УПРАВЛЕНИЯ

ADDLW к

Сложение (k + W — > W)

1

11 111x kkkk kkkk

C,DC,Z

ANDLW к

Логическое "И" (k and W -> W)

1

11 1001 kkkk kkkk

Z

CALL k

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

2

10 0kkk kkkk kkkk

CLRWDT -

Обнулить WDT

1

00 0000 0110 0100

TO,PD

GOTO k

Переход к адресу k

2

10 1kkk kkkk kkkk

IORLW k

Логическое "ИЛИ" (К or W -> W)

1

11 1000 kkkk kkkk

Z

MOVLW k

Пересылка (k — > W)

1

11 00xx kkkk kkkk

RETFIE -

Возврат из прерывания

2

00 0000 0000 1001

RETLW k

Возврат с константой

2

11 01xx kkkk kkkk

RETURN -

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

2

00 0000 0000 1000

SLEEP -

Останов

1

00 0000 0110 0011

TO,PD

SUBLW k

Вычитание (k - W -> W)

1

11 110х kkkk kkkk

C,DC,Z

XORLW k

Исключающее "ИЛИ"

(k or W->W)

1

11 1010 kkkk kkkk

Z

Примечание

1: Если регистр ввода/вывода изменяется, то исходным значением будет величина, считанная

непосредственно с контактов.

2: Если команда модифицирует регистр TMR0, то предделитель будет обнулен.

3: Если в счетчик программ записывается адрес (т.е. условие проверки «истина»), то команда

выполняется за два цикла. Второй цикл выполняется как команда NOP.

Рекомендуемая структура программы

для микроконтроллера PIC 16 F 877

list p=16f877 ; директива определения процессора

#include <p16f877.inc> ; подключение списока определений переменных

;процессора

__CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF

; '__CONFIG' - директива определения битов конфигурации процессора

;***** определение переменных

w_temp EQU 0x70 ; переменная для сохранения текущего состояния при

;обработке прерывания

status_temp EQU ; переменная для сохранения текущего состояния при

;обработке прерывания

;**********************************************************************

ORG 0x000 ; размещение команд по адресу сброса процессора

clrf PCLATH ; очистка старших бит счетчика команд

goto main ; переход на основную программу

ORG 0x004 ; размещение команд по вектору прерывания

;процессора

movwf w_temp ; сохранение текущего значения регистра W

movf STATUS,w ; сохранение текущего значения регистра

;STATUS

movwf status_temp

; прерывающая программа

movf status_temp,w ; восстановление значения регистра STATUS

movwf STATUS

swapf w_temp,f

swapf w_temp,w ; восстановление значения регистра Ц

retfie ; возврат в основную программу

main

; основная программа

END ; директива конца программы


Описание лабораторного стенда

Принципиальная схема системы на базе микроконтроллера PIC16F877 показана на рис. 6. Генератор тактовых импульсов для микроконтроллера PIC16F877 (микросхема DD1) реализован на кварцевом резонаторе ZQ1 и двух конденсаторах С1 и С2. Для запуска контроллера при подаче питающего напряжения к входу MCLR (ножка 1) подключено питание через ограничивающий резистор R1. К ножке 40 МК подключен светодиод D1 и ограничивающий резистор R2.

Рис. 6. Принципиальная схема системы на базе микроконтроллера PIC16F877

В состав лабораторного комплекса также входит персональный компьютер с установленной на нем средой разработки программ для контроллеров Microchip MPLAB и программатор PICPROG для программирования микроконтроллера (рис.7).

Рис. 7. Лабораторный комплекс

Постановка задачи

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

Порядок выполнения работы

1. Разработка алгоритма работы МК.

2. Написание программы на языке ассемблера в соответствии с алгоритмом.

3. Набор и отладка программы в среде MPLAB.

4. Программирование МК с помощью программатора.

5. Проверка корректности работы программы в системе.

Отчет

Отчет включает в себя:

1. Постановку задачи.

2. Описание системы.

3. Алгоритм программы.

4. Текст программы.

Литература

1. Основы микропроцессорной техники. /Новиков Ю.В., Скоробогатов П.К. – М:ИНТУИТ.РУ «Интернет-Университет Информационных технологий», 2003. – 440 с.

2. Ульрих В.А. Микроконтроллеры PIC16C7X.Семейство восьмиразрядных КМОП микроконтроллеров с аналого-цифровым преобразователем.-СПб.:Наука и техника,2000.-253 с.

3. PIC16F87x: Однокристальные 8-миразрядные FLASH CMOS микроконтроллеры компании Microchip Technology Incorporated. – http://www.microchip.ru, 2002 – 184 с.

4. MPLAB IDE: Интегрированная среда разработки для микроконтроллеров PICmicro компании Microchip Technology Incorporated. - http://www.microchip.ru, 2001 - 156 c.

5. MPMASM: Руководство пользователя. ­ http://www.microchip.ru, 2000 – 62 с.


Содержание

Введение

3

Цель работы:

3

Характеристика микроконтроллера PIC 16 F 877

3

Аппаратная составляющая микроконтроллера

4

Архитектура микроконтроллера

4

Организация памяти команд

7

Организация памяти данных

8

Периферийный модуль – порт ввода/вывода PORTB

10

Программная составляющая микроконтроллера

11

Система команд микроконтроллера

11

Рекомендуемая структура программы для микроконтроллера PIC16F877

14

Описание лабораторного стенда

15

Постановка задачи

16

Порядок выполнения работы

16

Отчет

17

Литература

17