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

Дисциплины:

Архитектура (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)






Краткие теоретические сведения. Прерывания делятся на внутренние и внешние



Прерывания делятся на внутренние и внешние. Внешние прерывания поступают на 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.

 

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

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.

 


Просмотров 404

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




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