Смекни!
smekni.com

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

Полный список команд смотрите в таблице 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.

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

для микроконтроллера PIC16F877

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

Характеристика микроконтроллера PIC16F877

3

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

4

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

4

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

7

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

8

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

10

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

11

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

11

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

14

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

15

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

16

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

16

Отчет

17

Литература

17