Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




Прерывания делятся на внутренние и внешние. Внешние прерывания поступают на 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. Какой производственный процесс может работать под управлением этой программы?

 

 

Лабораторная работа № 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.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...