Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Практическая часть. Министерство образования республики Беларусь

Читайте также:
  1. Burglars' trip. Часть вторая 1 страница
  2. Burglars' trip. Часть вторая 10 страница
  3. Burglars' trip. Часть вторая 11 страница
  4. Burglars' trip. Часть вторая 12 страница
  5. Burglars' trip. Часть вторая 13 страница
  6. Burglars' trip. Часть вторая 14 страница
  7. Burglars' trip. Часть вторая 15 страница

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

 

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО

 

 

Факультет автоматизированных и информационных систем

 

Кафедра “ Промышленная электроника ”

 

Отчет

по лабораторной работе №10

по дисциплине «Микропроцессорная техника»

 

на тему «Исследование системы прерываний

микроконтроллеров PIC16»

 

 

Выполнил: студент гр. ПМ-41

Мазуренко В.А.

Принял: преподаватель

Старостенко В.О.

 

Дата выполнения___________

Дата сдачи ___________

 

 

Гомель, 2014 г.

Цель работы: Изучить методы программирования на языке mikroC системы прерываний микроконтроллеров семейства PIC16. Исследовать методику проверки работы микроконтроллерных устройств в режиме прерываний с помощью среды моделирования Proteus VSM.

 

Практическая часть

Рисунок 1 – Схема МКУ с управлением светодиодом от кнопки

Задание 1. Разработайте программу для МКУ, схема которого приведена на рисунке 1. Алгоритм работы МКУ следующий. После сброса МК (запуска программы) и разомкнутом контакте кнопки SB1 светодиод «мигает» с частотой 1 Гц (0,5 с – светится, 0,5 с – погашен). При каждом нажатии на кнопку (замыкании ее контакта) светодиод гаснет на время 5 с, а затем вновь начинает «мигать» с частотой 1 Гц.

Указание. Используйте прерывание по INT при нажатии кнопки. Для реализации «мигающего» режима светодиода используйте функцию временной задержки Delay_ms(). Разработанную программу назовите int_2.c.

void interrupt() // функция-обработчик прерывания { PORTC ^= 0x01; // инвертировать сигнал на выводе RC0 INTF_bit = 0; // сбросить флаг прерывания INTF PORTC.B0=0; Delay_ms(5000); } void init(); void main() { init(); while(1) { PORTC.B0=1; Delay_ms(500); PORTC.B0=0; Delay_ms(500); OPTION_REG.B6 =0; // активный перепад для INT: 1 -> 0 INTCON.B4 = 1; // разрешить прерывание по INT INTCON.B7 = 1; // общее разрешение прерываний } } void init() { TRISB.B0 = 1; // настроить линию RB0 на ввод TRISC.B0 = 0; // настроить линию RC0 на вывод PORTC.B0 = 1; // погасить светодиод OPTION_REG.B7 = 0; // подключить к порту В внутренние }

Рисунок 2 – Схема МКУ для генерации меандра

Задание 2. Разработайте программу для МКУ на рисунке 2, чтобы на линию RC1 выдавался меандр с частотой 500 Гц.

Указание. Используйте прерывание по переполнении таймера. По формуле (2) определите число, которое необходимо загружать в TMR0 для получения частоты меандра 500 Гц. Расчеты проведите для тактовой частоты 8 МГц и коэффициенте К = 16 предделителя. Разработанную программу назовите meandr500.c.

 

TMR0 = 256 – 1000 / (4 × 0,125 × 16) = 131

 

 

void interrupt() // функция-обработчик прерывания от TMR0 { PORTC ^= 0x02; // инвертировать сигнал на выводе RC1 TMR0 = 131; // перезагрузить таймер T0IF_bit = 0; // сбросить флаг прерывания T0IF } void main() { TRISC.B1 = 0; // настроить линию RC1 на вывод OPTION_REG = 0x03; //выбрать коэффициент 256 предделителя TMR0 = 131; // загрузить таймер для отсчета времени // переполнения 10 мс INTCON.B5 = 1; // разрешить прерывания от TMR0 INTCON.B7 = 1; // общее разрешение прерываний while(1); // зацикливание программы }

 

 

 

Рисунок 3 – Схема МКУ управления светодиодом от таймера

 

 

Задание 3. Модернизируйте программу timer.c, чтобы она выполняла следующий алгоритм. После сброса МК (запуска программы) светодиод должен 5 раз «мигнуть» с частотой 0,5 Гц (загореться на 1 с и погаснуть на 1 с пять раз). После этого светодиод должен гореть постоянно. Разработанную программу назовите timer_2.c.

 

 

char counter = 0; // переменная-счетчик переполнений TMR0 char flag_T = 0; // переменная-флаг отсчета времени 1 с char pr; void interrupt() { counter++; if(counter == 100) // если истекло время 1 с { flag_T = 1; // установить флаг отсчета 1 с counter = 0; } TMR0 = 178; // перезагрузить таймер T0IF_bit = 0; // сбросить флаг прерывания от TMR0 } void main() { TRISC.B0 = 0; // настроить линию RC0 на вывод OPTION_REG = 0x07; // выбрать коэффициент K=256 предделителя TMR0 = 178; // загрузить в TMR0 число для отсчета 10 мс INTCON.B5 = 1; // разрешить прерывания от TMR0 INTCON.B7 = 1; // общее разрешение прерываний pr=0; while(pr<10) { if(flag_T) // если прошло время 1 с { PORTC ^= 0x01; // переключить светодиод flag_T = 0; // сбросить флаг отсчета 1 с pr++;   }     }   }

 

 

Вывод: Изучили методы программирования на языке mikroC системы прерываний микроконтроллеров семейства PIC16. Исследовали методику проверки работы микроконтроллерных устройств в режиме прерываний с помощью среды моделирования Proteus VSM.


Дата добавления: 2015-12-07; просмотров: 60 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.007 сек.)