Главная Обратная связь Поможем написать вашу работу!

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






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



 

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

MPLAB-ICD специально предназначен для помощи при ознакомлении и отладке кода в составе лаборатории.

MPLAB-ICD обеспечивает:

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

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

- Внутрисхемная отладка.

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

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

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

- Интерфейс пользователя MPLAB.

- Совместимость с Windows XXXX.

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

 

 

В целом на лабораторном комплексе "УМК-7" проводятся следующие работы:

- изучение возможностей программной среды MPLAB

- приобретение начальных навыков программирования, компиляции и выполнения простых программ для микроконтроллера PIC16F877A

- ознакомление с внутренней и внешней структурой микроконтроллера PIC16F877A

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

- приобретение навыков записи программы в микроконтроллер PIC16F877A

- исследование выполнения отдельных команд, простых программ

- изучение операторов установки битов и операций сдвига

- приобретение навыков работы с числами в шестнадцатеричном коде

- изучение команд логических операций и переходов

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

- закрепление навыков маскирования данных и организации условных переходов

- закрепление навыков инициализации портов

- исследование особенностей записи и обращения к подпрограммам



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

- закрепление навыков программирования вывода

- изучение таймерных функций процессора, режимов работы таймера

- обучение способам организации прерываний, инициализация различных видов прерываний

- изучение принципов аналогово-цифрового преобразования, приобретение навыков сбора схемы с аналоговыми сигналами.

 

Приложение Г

Регистр Status

В таблице Г.1 показаны расположение и имена бит регистраStatus.

 

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

Номера бит
Имена бит 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”, если был перенос из младшего полубайта регистра в старший полубайт, актуально при выполнении команд сложения и вычитания в двоично-десятичной системе;



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

 

Т а б л и ц а Г.2 – Выбор номера банка при непосредственной адресации

RP1(первый бит номера банка) RP0 (нулевой бит номера банка) Номер банка (десятичная система)
Примечание. RP1 и RP0 образуют разряды двоичного числа

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

 

Т а б л и ц а Г.3 – Значения регистра Status после команды CLRF

IRP RP1 RP0 -TO -PD Z DC C
1 или 0 1 или 0

Приложение Д

 

Описание инструкций МК PIC

 

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

Вместо адреса регистра в программе более удобно писать его символьное имя. Например, если регистр по адресу h’21’ имеет имя R1, тогда инструкция, описанная как ADDWF f, d, в программе может быть записана двумя способами: ADDWF h’21’ , Wили ADDWF R1, W.

Директива ORG h’xx’ – это указатель для ассемблера, что код, следующий за этим выражением, начинается с адреса h’xx’ ЭППЗУ.



 


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

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

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

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

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

 

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

Синтаксис: [label] ADDWF 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.

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

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

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

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

 

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

Синтаксис: [label] BCF 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 и пропустить, если 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.

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

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

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

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



Приложение Е

Модуль таймера TMR1

TMR1- 16-разрядный таймер/счетчик, состоящий из двух 8-разрядных регистров (TMR1H и TMR1L), доступных для чтения и записи. Счет выполняется в спаренных регистрах (TMR1H:TMR1L), инкрементируется их значение от 0000h до FFFFh. При добавлении ещё единицы будет переполнение регистров и в счетчиках будет снова 0000h. При переполнении счетчика устанавливается в '1' бит флага прерывания TMR1IF в регистре PIR1<0>. Само прерывание можно разрешить/запретить установкой/сбросом бита TMR1IE в регистре Р1Е1<0>.

TMR1 может работать в режимах: режим таймера, режим счетчика.

Включается TMR1 установкой бита TMR1ON в ‘1’ (T1CON<0>).

Битом TMR1CS (T1CON<1>) выбирается источник тактовых импульсов.

TMR1 инкрементируется при каждом машинном цикле.

Когда включен генератор тактовых импульсов (T1OSCEN=1), выводы RC1/T1OSI/CCP2 и РС0/T1OSO/TICK1 настроены как входы. Значение битов TRISC<1:0> игнорируется, а чтение данных с этих выводов дает результат '0'.

Управляющие биты TMR1 находятся в регистре T1CON.

Сброс регистров TMR1 (TMR1H, TMR1L). Регистры TMR1H и TMR1L не сбрасываются в 00h при сбросе по включению питания и других видах сброса.

Предделитель TMR1 очищается при записи чисел в регистр TMR1L или TMR1H.

Регистр PIE1 (адрес 8Ch) доступен для чтения и записи, содержит биты разрешения периферийных прерываний. Чтобы разрешить периферийные прерывания необходимо установить в '1' бит PEIE (INTCON<6>).

Регистр INTCON (адрес 0Вh, 8Вh, 10Вh или 18Вh) доступен для чтения и записи, содержит биты разрешений и флаги прерываний: переполнение TMR1; изменения уровня сигнала на выводах PORTB; внешний источник прерываний RB0/INT.

Примечание. Флаги прерываний устанавливаются при возникновении условий прерываний вне зависимости от соответствующих битов разрешения и бита общего разрешения прерываний GIE (INTCON<7>).

Регистр PIR1 доступен для чтения и записи, он содержит флаги прерываний периферийных модулей.

Примечание. Флаги прерываний устанавливаются при возникновении условий прерываний вне зависимости от соответствующих битов разрешения и бита общего разрешения прерываний GIE (INTCON<7>). Программное обеспечение пользователя должно сбрасывать соответствующие флаги при обработке прерываний от периферийных модулей.

 

Приложение Ж

Таймер TMR0

Таймер TMR0 – 8-разрядный таймер/счетчик с предделителем. Чем больше коэффициент предделителя, тем медленнее заполняется счетчик таймера TMR0. После переполнения счетчика (значение в регистре TMR0 равно FFh) происходит прерывание, в результате чего в регистре INTCON бит TOIF (бит 2) устанавливается в 1. Само прерывание может быть разрешено/запрещено установкой/сбросом бита TOIE (INTCON<5>). При запрете прерывания программа не останавливается, но флаг прерывания от TMR0 TOIF (INTCON<2>) появляется и он должен быть сброшен в подпрограмме обработки прерывания или в основной программе. Для включения таймера и получения прерывания от него при переполнении счетчика таймера используются регистры OPTION_REG и INTCON. Связь регистров и бит с ТМR0 показана в таблице 4.1.

 

Таблица 4.1 Связь регистров и бит с ТМR0

Адрес Имя Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
01,101 TMR0 Регистр таймера TMR0
0B,8B, 10B,18B INTCON GIE PEIE TOIE INTE RBIE TOIF INTF RBIF
81,181 OPTION_ REG RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0

Затененные биты не используются.

Регистр OPTION_REG

Регистр OPTION_REG доступен для чтения и для записи. Он содержит биты: конфигурации предделителя (PSC) для TMR0/WDT, внешнего преры-вания INT и состояния выходов порта В. Описание битов регистра OPTION_REG показано в таблице Ж.1.

Таблица Ж.1 Регистр OPTION_REG(адреса 81h, 181h)

№ бита
Имя бита RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
после сброса
доступность R/W R/W R/W R/W R/W R/W R/W R/W
Обозначения: R – читаемый разряд, W – записываемый разряд.  

 

Назначение битов регистра OPTION_REG приведено ниже.

Бит 7: -RBPU: включение подтягивающих резисторов на PORTВ

0 = подтягивающий резистор включен

1 = подтягивающий резистор выключен

Примечание: если используется низкий уровень напряжения при програм-мировании по входу PGM и выводы PORTB подтянуты к высокому уровню, то 3-ий бит в регистре TRISB необходимо сбросить, чтобы вход RB3 не был подтянут к высокому уровню. Это необходимо для правильного програм-мирования устройства.

Бит 6: INTEDG: выбор активного фронта сигнала прерывания на входе RB0/INT регистра PORTB

0 = прерывание по заднему фронту.

1 = прерывания по переднему фронту.

Бит 5: TOCS: выбор источника тактового сигнала для TIMER0.

1 = тактовый сигнал с входа RA4/T0CKI.

0 = внутренний источник тактового сигнала (CLKOUT).

Бит 4: T0SE: выбор фронта приращения TMR0 при внешнем

тактовом сигнале

1 = приращение по заднему фронту сигнала на T0CKI.

0 = приращение по переднему фронту сигнала на T0CKI.

Бит 3: PSA: выбор включения предделителя.

1 = предделитель включен перед сторожевым таймером WDT.

0 = предделитель включен перед таймером TMR0.

Биты 2-0: PS2 - PS0; выбор коэффициента предделителя. Чем больше коэффи-циент предделителя, тем больше время паузы, обеспечиваемой таймером.

Коэффициенты деления предделителя показаны в таблице 4.2.

Таблица Ж.2 Коэффициенты деления в зависимости от значений PS2- PS0

 

  Значение   TMR0 (PSA = 0) WDT (PSA = 1)  
PS2 PS1 PS0
1:2 1:1
1:4 1:2
1:8 1:4
1:16 1:8
1:32 1:16
1:64 1:32
1:128 1:64
1:256 1:128

 

Установка коэффициента деления предделителя 1:1 для TMR0

соответствует переключению предделителя на сторожевой таймер.

Регистр INTCON

Регистр INTCON доступен для чтения и для записи. Он содержит

биты масок прерываний и флаги прерываний. Флаги прерываний

должны сбрасываться программно. Регистр показан в таблице Ж.3.

Таблица Ж.3 Регистр INTCON (адреса 0Bh, 8Bh, 10Bh, 18Bh)

№ бита
Имя бита GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
после сброса
доступность R/W R/W R/W R/W R/W R/W R/W R/W
Обозначения: R – читаемый разряд, W – записываемый разряд.  

 

Назначение битов регистра INTCON приведено ниже.

Бит 7: GIE– Общее (глобальное) управление прерываниями.

1=все немаскируемые прерывания разрешены.

0=все прерывания запрещены.

Примечание: Если происходит прерывание, то бит GIE

сбрасывается. По команде выхода из подпрограммы (RETFIE) этот бит

устанавливается.

Бит 6: PEIE– маска прерываний от периферийных устройств

1=все немаскируемые прерывания периферийных устройств

разрешены

0=все прерывания периферийных устройств запрещены

Бит 5: T0IE– маска прерывания по переполнению TMR0

1=прерывание TMR0 разрешено

0= прерывание TMR0 запрещено

Бит 4: INTE– маска внешнего прерывания по входу RB0/INT

1=прерывание по входу RB0/INT разрешено

0=прерывание по входу RB0/INT запрещено

Бит 3: RBIE– маска прерывания по изменению состояния на

входах RB7: RB4 PORTB

1=прерывание по изменению уровня сигнала на входах RB7: RB4 PORTB разрешено

0=прерывание по изменению уровня сигнала на входах RB7: RB4 PORTB запрещено

Бит 2: T0IF– флаг прерывания при переполнении TMR0

1=устанавливается, если регистр TMR0 переполнен (очищается

программно)

0=если регистр TMR0 не переполнен

Бит 1: INTF– флаг внешнего прерывания по входу RB0/INT

1=устанавливается, если происходит прерывание по входу

RB0/INT

0=если прерывание по входу RB0/INT не произошло

Бит 0: RBIF– флаг прерывания по изменению уровня сигнала на входах RB7: RB4 PORTB

1=устанавливается, если изменился уровень сигнала на одном из входов RB7:RB4 PORTB (очищается программно)

0=если уровень сигнала на входах RB7:RB4 не изменились.

Приложение З

Модуль АЦП

Модуль аналого-цифрового преобразователя (АЦП) имеет восемь каналов у 40/44-выводных микросхем.

Входной аналоговый сигнал через коммутатор каналов заряжает внутренний конденсатор АЦП Chold. Модуль АЦП преобразует напряжение, удерживаемое на конденсаторе Chold в соответствующий 10-разрядный цифровой код методом последовательного приближения. Источник верхнего и нижнего опорного напряжения может быть программно выбран с выводов VDO, VSS, RA2 или RA3.

Допускается работа модуля АЦП в SLEEP режиме микроконтроллера, при этом в качестве источника тактовых сигналов должен быть выбран RC генератор.

Для управления АЦП в микроконтроллере используется 4 регистра.

- регистр результата ADRESH (старший бит);

- регистр результата ADRESL (младший бит);

- регистр управления ADCON0;

- регистр управления ADCON1.

Регистр ADCON0 используется для настройки работы модуля АЦП, а с помощью регистра ADCON1 устанавливается какие входы микроконтроллера будут использоваться модулем АЦП и в каком режиме (аналоговый вход или цифровой порт ввода/вывода).

 

Регистр ADCON0 (адрес 1Fh)

Таблица З.1

 

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/-DONE - ADON

Бит 7 Бит 0

 

Биты 7-6: ADCS1: ADCS0:выбор источника тактового сигнала

Время получения одного бита результата определяется параметром ТAD. Для 10-разрядного результата требуется как минимум 12 ТAD. Параметры тактового сигнала для АЦП определяются программно, ТAD может принимать следующие значения:

00= 2ТOSC

01= 8ТOSC

10= 32ТOSC

11= время такта внутреннего генератора RC модуля АЦП

 

Биты 5-3: CHS2: CHS0:выбор аналогового сигнала

000 = канал 0, (RA0/AN0)

001 = канал 1, (RA1/AN1)

010 = канал 2, (RA2/AN2)

011 = канал 3, (RA3/AN3)

100 = канал 4, (RA4/AN4)

101 = канал 5, (RA5/AN5)

110 = канал 6, (RA6/AN6)

111 = канал 7, (RA7/AN7)

 

Бит 2: GO/-DONE:бит статуса модуля АЦП

Если ADON = 1

1: модуль АЦП выполняет преобразование(установка бита вызывает начало преобразования)

0: состояние ожидания (аппаратно сбрасывается по завершению преоб-разования)

 

Бит 1 Не используется: читается как ‘0’

 

Бит 0 ADON: бит включения модуля АЦП

1: модуль АЦП включен

0: модуль АЦП выключен и не потребляет тока

 


Просмотров 309

Эта страница нарушает авторские права




allrefrs.ru - 2021 год. Все права принадлежат их авторам!