Лабораторная работа № 6 Обработка прерываний. Таймер TMR0. 


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



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа № 6 Обработка прерываний. Таймер TMR0.



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

Прерывания делятся на внутренние и внешние. Внешние прерывания поступают на RB0 порта PORTB. Внутренние прерывания возникают при переполненении таймера TMR0 и при снижении напряжения на битах PORTB.

При разрешенных прерываниях в случае их возникновения осуществляется переход на регистр 04h в памяти программ, где находится указание о безусловном переходе на подпрограмму обработки прерывания. Сама программа отделяется от основной программы через GOTO $, а заканчивается RETFIE. При переходе на подпрограмму бит GIE в регистре INTCON<7> автоматически сбрасывается в 0. В теле этой подпрограммы анализируются флаги, сообщающие о возможных источниках возникновения прерываний, снимается флаг, сообщающий о возникновении данного прерывания, что исключает повторную обработку прерывания, и выполняются действия, которые необходимо выполнить при появлении данного прерывания. После выполнения инструкции RETFIE восстанавливается автоматически разрешение прерываний и основная программа продолжает выполняться с адреса, перед которым произошло прерывание. Это осуществляется благодаря запоминанию в стеке адреса последней выполненной инструкции.

В данном упражнении организуется прерывания от переполнения таймера TMR0.

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

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

 

Таблица 6 Задания по изменению времени работы TMR0

Установка предделителя Вариант 1 Вариант 2 Вариант 3
     

В соответствии с этим заданием по варианту 1 коэффициент предделителя 1:4, по варианту 2 – 1:8 и по варианту 3 – 1:16. Для наблюдения за работой программы в режиме симулятора в окно наблюдения включите туда регистры PORTC, OPTION_REG, INTCON, PCL, Wreg, STATUS, TRISC. Снимите окна в начальный момент, в момент запуска программы обработки переполнения. Сравните значение счетчика команд, при котором наступило прерывание при разных значениях предделителя.

 

Программа 4.3

Include<p16F877A.inc>;

org h'00';

GOTO GLAV; при запуске программы сразу происходит переход на

;выполнение основной программы с пропуском инструкции перехода

; на подпрограмму обработки прерывания Prer

nop;

nop;

nop;

org h'04';

GOTO Prer

NOP

GLAV

NOP

NOP

CLRF STATUS

CLRF PORTC

MOVLW b'00100000'

MOVWF INTCON; разрешаем прерывания от TMR0

BSF STATUS,5

CLRF TRISC

MOVLW B'00000000'

MOVWF OPTION_REG;установили предделитель 1:2 и работу таймера

;от внутреннего тактового сигнала

BCF STATUS, 5

MOVLW B'11000000';со значения этого числа начнет работать

;модуль TMR0 со скоростью наполнения регистра, определяемой

;настройкой предделителя в регистре OPTION_REG.

MOVWF TMR0

Sled_det

MOVLW B'00001111'

MOVWF PORTC

GOTO Sled_det

GOTO $

Prer;подпрограмма обработки прерывания, вызванного переполнением

;счетчика TMR0, после ее отработки в PORTC будут гореть все лампы

BCF INTCON,2; сброс флага переполнения таймера

MOVLW b'11111111'

MOVWF PORTC; в PORTC горят все лампы

RETFIE

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

 

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

Отчет оформляется на группу. В созданный вордовский файл копируется текст программы и окна по ходу выполнения программы в режиме MPLabSim.

 

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

1. После выполнения инструкции RETFIE куда возвращается программа?

2. В каком состоянии находится бит разрешения прерываний в регистре INTCON после выполнения инструкции RETFIE?

3. Как изменяется значение в регистре PCL при входе в подпрограмму обработки прерывания и при выходе из нее?

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

5. После отработки программы обработки прерывания какое значение устанавливается в INTCON<5>? О чем это говорит?

6. В каких банках находятся регистры INTCON и OPTION_REG?

7. Какой производственный процесс может работать под управлением этой программы?

 

 

5 Лабораторная работа № 7 Преобразование аналоговых сигналов. АЦП.

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

Теоретические сведения

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

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

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

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

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

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

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

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

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

После включения и конфигурации АЦП выбирается рабочий аналоговый канал. Соответствующие биты TRIS аналоговых каналов должны настраивать порт ввода/вывода на вход. Перед началом преобразования необходимо выдержать временную паузу, расчет которой приведен в [11].

Рекомендованная последовательность действий для работы АЦП:

1. Настроить модуль АЦП:

- настроить выводы как аналоговые входы, входы VREF или цифровые

каналы ввода/вывода (ADCON1);

- выбрать входной канал АЦП (ADCON0);

- выбрать источник тактовых импульсов для АЦП (ADCON0);

- включить модуль АЦП (ADCON0).

2. Настроить прерывание от модуля АЦП (если необходимо):

- сбросить бит ADIF в 0 (регистр PIR1<6>);

- установить бит ADIE в 1(регистр PIE1<6>);

- установить бит PEIE в 1(регистр INTCON<6>);

- установить бит GIE в 1(регистр INTCON<7>);

3. Выдержать паузу, необходимую для зарядки конденсатора СHOLD. Пауза

обеспечивается с помощью таймера TMR0.

4. Начать аналого-цифровое преобразование:

- установить бит GO/-DONE в 1(ADCON0<2>).

5. Ожидать окончания преобразования:

- ожидать пока бит GO/-DONE не будет сброшен в 0; ИЛИ

- ожидать прерывание по окончанию преобразования.

6. Считать результат преобразования из регистров ADRESH:ADRESL, сбросить бит ADIF в 0 (регистр PIR1<6>), если это необходимо.

7. Для следующего преобразования необходимо выполнить шаги начиная с пункта 1 или 2. Время преобразования одного бита определяется как время ТAD. Минимальное время ожидания перед следующим преобразованием должно составлять не менее 2 ТAD.

 

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

Изучите назначение регистров ADCON0, ADCON1, ADRESH, ADRESL, INTCON, PIR1, PIE1, TRISA, PORTA, TRISE, PORTE, TMR0 (приложения Ж и З).

 

5.2 Исходные данные и задание

На рисунке 5.1 показана схема соединения разъемов и бит регистров для выполнения лабораторной работы. Аналоговый сигнал подается с выхода делителя на бит RA0 PORTA. Сигнал внешнего прерывания на бит RB0 PORTB подается от бита 1 PORTD через схему с двумя тумблерами, один из которых включен при запуске программы, а другой выключен. Он включается для подачи сигнала прерывания на бит RB0, в результате чего происходит выход из цикла и обработка в АЦП следующего аналогового значения.

Вывод двоичного значения сигнала после преобразования аналогового сигнала в АЦП из PORTC осуществляется на лампы 0-7 (рисунок 5.1).

Биты PORTC и RORTD настраиваются на вывод, биты 0-2 PORTA и биты 0-3 PORTB - на ввод.

АЦП настраивается на работу от основного генератора частоты с пределителем Fosc/8.

TMR0 запускается с предделителем 1:256. Время его работы обеспечивает зарядку конденсатора в АЦП до уровня, соответствующего но-вому сигналу. Значение нового сигнала устанавливается в период ожидания внешнего прерывания (включения тумблера) изменением положения задатчика в соответствии с вариантом лабораторной работы.

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

 

 

Рисунок 5.1 – Схема соединений в лабораторной работе

к программе 5.1

 

Таблица 7 Задания к лабораторной работе по применению АЦП

Номер вар-та                
Положение задатчика 5,0 4,5 4,0 3,5 3,0 2,5 2,0 1,5

 

Программа 5.1.

include "p16F877A.inc"

org h'00'

nop

nop

nop

org h'05'

CLRF STATUS

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

movlw B'01000001'; Настройка АЦП. Частота Fosc/8

movwf ADCON0

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

bsf STATUS,5

movlw B'00000111'

movwf TRISA;биты 0-2 PORTА на ввод

movlw B'00001111'

movwf TRISB;настроить,биты 0-3 PORTB на ввод

clrf TRISD;настроить PORTD на вывод

clrf TRISC;настроить PORTC на вывод

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

сохранить окноаботе по применению АЦПе программы.

выполнения программы. ия подачей

movlw B'10000111';Установка предделителя перед TMR0

movwf OPTION_REG; коэффициент деления 1:256

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

movlw B'00001110';эта константа вводится в регистр ADCON1;для настройки АЦП – левое выравнивание и выбор бита RA0 в PORTA для;ввода аналогового сигнала

movwf ADCON1

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

bcf STATUS,5

movlw B'00000111'

movwf PORTD; подаем энергию в PORTD

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

Main

btfss INTCON,T0IF; Ждать переполнения TMR0

goto Main

bcf INTCON,T0IF;Сбросить флаг прерывания от TMR0

bsf ADCON0,GO; Запуск АЦП

Wait

btfss PIR1,ADIF; Ждать окончания преобразования

goto Wait

movf ADRESH,W;Вывод результата преобразования

movwf PORTC; на светодиоды порта С

WaitPush; после загорания светодиодов записать двоичное значение,;установить новый ток, если это необходимо, и включить тумблер на подачу 1;в PORTB<0>

btfss PORTB,0; Ждать включение тумблера и подачи 1 в RB0

goto WaitPush

goto Main; Повтор программы

end

 

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

Отчет оформляется на группу. В созданный вордовский файл копируется текст программы и окна по ходу выполнения программы в режиме MPLabSim. Записать двоичное значение измеренного аналогового значения по показаниям ламп.

 

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

1.Сколько каналов ввода аналоговых значений имеет микроконтроллер PIC16F877A?

2.Каким методом преобразуется аналоговое значение в цифровое в модуле АЦП микроконтроллера PIC16F877A?

3.Какие регистры используются для управления АЦП в микроконтроллере PIC16F877A?

4.Для чего нужна пауза перед подключением канала АЦП в микроконтроллере PIC16F877A?

5.Сколько должно быть TAD для 10-разрядного преобразования в микроконтроллере PIC16F877A?

6.В каких регистрах сохраняется результат 10-разрядного преобразования в АЦП в микроконтроллере PIC16F877A?

7.Почему нельзя отлаживать программу в режиме MPLabSim?

 

 

 

 

 

Приложение А

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

 

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

 

Т а б л и ц а Б.1 - Запись чисел в различных системах счислений

Десятичная система Двоичная система Двоично-десятичная система Шестнадцатеричная система
       
       
       
       
       
       
       
       
       
       
    0001 0000 A
    0001 0001 B
    0001 0010 C
    0001 0011 D
    0001 0100 E
    0001 0101 F
    0001 0110  
    0001 0111  
    0001 1000  
    0001 1001  
    0010 0000  

 

Примеры записи чисел в программе:

- D’07’ – десятичное число;

- B’0111’ – двоичное число;

- H’07’или 0х07 или 07h – шестнадцатеричное число.

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

Обратный перевод чисел очевиден, необходимо только аккуратно писать именно четверки двоичных чисел, дописывая при необходимости нули слева: 116.= 00012, 216 = 00102. П р и м е р. 415С16==0100 0001 0101 11002.

В двоично-десятичной системе каждый десятичный знак отображается четырьмя двоичными числами.


Приложение Б

Карта памяти МК PIC16877

 
 

Приложение В


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

"УМК-7"

Лабораторный комплекс "УМК-7" создан для подготовки специалистов согласно современным требованиям, диктуемых развитием технологий в области: применения микропроцессоров и микроконтроллеров в системах (АР, СОИ, ДУ) технологических процессов. Помимо обучения языку ассемблер на примере легко программируемого контроллера PIC16F877A, студент ознакомится с внутренней и внешней структурой современных микроконтроллеров. Таким образом, комплект предназначен для изучения архитектурных и программных возможностей микропроцессоров.

Структурная схема УМК-7 представлена на рисунке В1.

Устройство программирования микроконтроллера, предназначено для ввода программы в микроконтроллер с ПК.

Выводы микроконтроллера непосредственно соединены с внешними разъёмами лабораторного комплекса.

Клеммные соединения (внешние разъёмы), предназначены для соединения выводов микроконтроллера с внешними устройствами.

К внешним устройствам относятся: внешние тумблеры, светодиоды, датчик температуры с нагревательным элементом, устройство звуковой сигнализации, источник регулируемого напряжения для АЦП, а также два внешних реле для управления внешними цепями до 12 Вольт и током до 0,5 Ампер.

 

 

Рисунок В1 - Структурная схема УМК-7

 

       
 
   
 

 


Рисунок В2 - Передняя панель стенда

 

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

2 – модуль MPLAB-ICD;

3 - ряд клеммных соединений (выводы PIC16F877A);

4 - ряд клеммных соединений (выводы внешних устройств);

5 - аналоговый выход (ограничение по току до 1 мА);

6 - световая сигнализация;

7 – тумблеры с выходом 0 или 5 Вольт (ограничение по току до 1 мА, верхнее положение тумблера соответствует наличию на выходе напряжения 5 Вольт);

8 – внешние реле К1 и К2.

 

 

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

 



Поделиться:


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

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