Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

цимпу / Практика / content / Пособия / Лаб. практикум, часть IV, лаб. работы № 12...20 (ЦиМПУ)_ДФО

.pdf
Скачиваний:
144
Добавлен:
13.02.2016
Размер:
3.83 Mб
Скачать

пунктом меню «File New». В появившемся окне редактора исходных текстов (рисунок 20.10) наберите исходный код программы, приведенный в методических указаниях к данной лабораторной работе.

Рисунок 20.10 – Редактор исходных текстов программ

8.6 После написания исходного кода программы к заданию № 3 с помощью пункта меню «File Save As…» откройте окно «Сохранить как» (рисунок 20.11). В этом окне выберите папку «LR20_3», в которой сохраняли файл исходного кода проекта и в строке «Имя файла» задайте название исходного кода программы, как «LR20_3.c» (рисунок 20.12). Затем нажмите кнопку «Сохранить».

Рисунок 20.11 – Окно сохранения файла исходного текста программы

91

Рисунок 20.12 – Сохранение исходного кода программы к заданию № 20.2

Рисунок 20.13 – Добавление исходного файла в проект

8.7 Кликните правой кнопкой мыши в окне редактора исходного кода и выберите пункт «Add To Project» (рисунок 20.13).

После описанных действий инспектор проекта должен иметь вид, показанный на рисунке 20.14.

92

Рисунок 20.14 – Инспектор проекта

8.8Выполните компиляцию проекта, используя пункт меню «Project Build All». Компилятор выводит отчет о компиляции в окне «Output». В случае успешной компиляции получите сообщение BUILD SUCCEEDED (рисунок 20.15). В случае обнаружения ошибок в исходном коде соответствующие сообщения будут выведены в область уведомлений. В таком случае необходимо исправить ошибки и запустить заново компилирование проекта.

8.9После успешной компиляции с помощью пункта меню «Programmer

Select Programmer» выбрать программатор PICkit2.

8.10Запрограммировать стенд (прошить микроконтроллер) используя

пункт меню «Programmer Program».

8.11 Результат программирования отобразится в окне сообщений, и в случае успешного программирования (сообщение – … PICkit2 Ready) необходимо перевести МК в рабочий режим с помощью пункта меню «Programmer Release from Reset».

8.12После получения сообщения, указанного на рисунке 20.3, микроконтроллер запрограммирован.

8.13Проверить работу светодиодных индикаторов VD1 и VD2 в зависимости от положения тумблеров SA1 и SA2.

9 После проверки преподавателем результатов работы закрыть MPLAB IDE, выключить ПК и учебный стенд.

10 Оформить отчет и сдать зачет.

93

Рисунок 20.15 – Отчет о компиляции

Содержание отчета

Отчет должен содержать:

1 Наименование и цель лабораторной работы.

2 Условие, схема алгоритма и листинг программы к заданию № 20.3. 3 Ответы на контрольные вопросы.

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

1 Как формируется временная задержка методом программных циклов?

2 Как формируется временная задержка с использованием таймера/счетчика?

3 Укажите функцию из библиотеки компилятора MPLAB C30 для языка программирования С, предназначенную для организации временных

задержек.

 

 

 

 

 

4

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

укажите их назначение.

 

 

 

 

5

Какие

действия

выполняет

строка

программы

LR20_1

«#define FCY (FOSC / 2)»?

 

 

 

 

6

Поясните назначение функции «_delay32(FCY)» в программе LR20_1.

Требования к знаниям и умениям учащихся

В результате выполнения лабораторной работы учащиеся должны знать:

особенности программной и аппаратной реализации временных функций в МК dsPIC33F;

структуру и режимы работы таймеров МК dsPIC33F.

Должны уметь:

94

составлять программы с помощью языка программирования С реализации временных функций, используя метод программных циклов и таймер/счетчик;

создавать проекты для прошивки МК dsPIC33FJ32MC204 в интегрированной среде MPLAB IDE 8;

выполнять компиляцию исходного кода программ прошивки МК учебного стенда НТЦ-31.000;

выполнять программирование МК учебного стенда НТЦ-31.000, а также проверку и отладку прошивки.

Методические указания

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

1.1 Реализация временных функций

Временные функции в микропроцессорных системах используются в случаях, когда необходимо выполнять какие либо действия периодически, либо производить измерение длительности какого либо события. Наибольшее распространение для реализации временных функций получили метод программных циклов и использование таймера/счетчика. Во всех случаях МК оперирует не непосредственно временем, а количеством машинных циклов, выполненных за интересующий интервал времени. Машинный цикл МК – это процедура выполнения ядром МК одной инструкции за один машинный такт, равный двум периодам тактирующего генератора. Частота внутреннего тактирующего генератора МК dsPIC33FJ32MC204 (по умолчанию) равна

7.37 Мгц. Следовательно, машинный цикл длится

1

 

1

 

 

7370000 2

3685000

секунды.

1.2 Метод программных циклов

Метод программных циклов относится к программным способам реализации временной задержки и состоит в следующем. В некоторую переменную загружают число, которое затем в каждом проходе цикла уменьшается на 1. Так продолжается до тех пор, пока содержимое переменной не станет равной 0, что интерпретируется программой как момент выхода из цикла, и, следовательно, истечение требуемого промежутка времени. Время задержки при этом определяется числом, загруженным в переменную-счетчик и временем выполнения команд, образующих цикл.

Для организации временных задержек библиотека компилятора MPLAB С30 имеет специальную функцию для языка программирования С:

void_delay32(unsigned long cycles).

95

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

1.3 Использование таймера/счётчика

Таймеры/счетчики (Т/С) предназначены для подсчета внешних событий, для получения программно-управляемых временных задержек и выполнения времязадающих функций микроконтроллера.

Микроконтроллеры семейства dsPIC33 имеют несколько 16-разрядных таймеров. Таймеры имеют обозначение Timer1, Timer2 Timer3 и т.д. С небольшими исключениями, все 16-битные таймеры имеют одинаковую функциональность и разделены на 3 типа:

-Таймер типа А (Timer1).

-Таймер типа В (Timer2, Timer4, Timer6, Timer8).

-Таймер типа С (Timer3, Timer5, Timer7, Timer9).

Таймеры типа В и С могут быть объединены для формирования 32разрядного таймера.

Каждый из таймеров настраивается следующими регистрами, доступными для чтения и записи:

-TMRx – регистр счета;;

-PRx – регистр периода;

-TxCON – регистр конфигурации, где x – номер таймера.

Также с каждым таймером ассоциированы следующие биты в регистре

управления прерываниями:

-TxIE – бит разрешения прерывания (регистр IESO);

-TxF – бит статуса прерывания (регистр IFSO);

-TxIP<2:2> - биты установки приоритета прерывания (регистр IPCO). Структурная схема модуля Timer1 приведена на рисунке 20.16.

Модуль Timer1 является 16-разрядным таймером, который может

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

16-разрядный Timer1 имеет следующие режимы работы:

-16-разрядный таймер;

-16-разрядный синхронный счетчик;

-16-разрядный асинхронный счетчик.

Эти режимы работы определяются установкой соответствующих битов в 16-разрядном регистре конфигурации T1CON.

96

Рисунок 20.16 – Структурная схема модуля Timer1

В16-разрядном режиме таймера, таймер инкрементируется на каждый цикл инструкций до соответствующего значения, предварительно загруженного в регистр периода PR1 (рисунок 20.16), а затем сбрасывается в «0» и продолжает считать. Если CPU входит в режим простоя IDLE, таймер может остановить приращение если бит TSIDL = 0 (бит регистра T1CON < 13 >). Если TSIDL = 1, модуль таймера может продолжать последовательность инкрементирования с завершением режима простоя CPU.

Врежиме 16-разрядного синхронного счетчика, таймер инкрементируется по нарастающему фронту внешнего тактового сигнала. Таймер считает до соответствующего значения загруженного в регистр PR1, затем сбрасывается в «0» и продолжает считать. В режиме простоя CPU модуль таймера работает в аналогичном режиме 16-разрядного таймера.

Врежиме 16-разрядного асинхронного счетчика в режиме простоя CPU,

таймер остановит инкрементирование, если бит TSIDL = 1.

Врежиме SLEEP CPU таймер Timer1 работает если:

-модуль таймера разрешен (бит регистра T1CON < 15 > TON = 1);

-выбран внешний источник тактирования (бит регистра T1CON < 1 > TCS = 1);

-бит TSYNC регистра T1CON < 2 > переведен в логический 0, который определяет внешний источник тактирования как асинхронный.

Когда все три условие выполнены, таймер продолжает считать до состояния регистра PR1 и, после чего, сброшен состоянием 0х0000. При

97

dsPIC33fj32mc204

 

 

 

 

 

SA2

 

 

 

 

 

 

 

 

 

SA1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

совпадении состояний регистров TMR1 и PR1 (рисунок 20.16)

устанавливается+3,3

бит T1IF в+3,3регистре управления прерываниями IFSO. В этом

 

 

 

 

 

 

 

 

 

В

 

 

 

 

 

 

 

 

В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

случае генерируется прерывание, если установлено соответствующий бит

разрешения прерывания таймера.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1k

R106

 

 

 

 

 

 

1k

 

 

R105

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

VD1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.4 Схема электрическая принципиальная к лабораторной работе

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для

ввода

 

дискретной

информации

 

 

в

 

микроконтроллер

широко

 

 

 

 

 

 

 

33

32

31

30

29

28

27

26

25

24

23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

применяются различные переключатели, кнопки и клавиатуры, либо иные

дискретныеRP4/RB4

RA8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

датчикиRA3 Vss .

 

 

 

 

 

 

21

20

 

 

18

17

 

16

 

 

 

 

 

 

13

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

34

 

 

ДискретнымиRA2/OSC2

 

 

выходамиVdd 22 AN5/RP3/RB3

AN4/RP2/RB2микроконтроллер19 MCLR AVdd22 AVss 15 14 RA7

 

 

управляет различными

 

RA4

 

 

 

 

 

 

 

 

 

 

AN8/RP18/RC2

AN7/RP17/RC1

AN6/RP16/RC0

 

AN2/RA2

 

AN1/RA1

 

AN3/RA3

 

 

 

 

 

RP15/RB15

 

RP14/RB14

 

 

 

 

RA10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AN3/RA3

 

 

 

AN0/RA0

 

 

 

 

21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

по

R112

VD2

исполнительнымиRA9

 

 

 

 

 

устройствамиAN2/RA2,

 

 

работающими

 

 

 

 

 

 

принципу

включено/выключено.

AN4/RP2/RB2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP13/RB13

 

 

 

 

 

 

 

 

 

 

 

 

 

36

RP19/RC3

 

 

 

 

 

 

 

23

 

 

 

 

 

 

 

AN1/RA1

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

24

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

На

 

 

рисунке

20.17

 

 

AN5/RP3/RB3

 

 

 

 

схема

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP12/RB12

 

 

 

 

 

 

 

 

 

 

 

 

 

приведена

 

 

электрическая

 

принципиальная к

37

RP20/RC4

 

 

 

 

 

 

 

25

 

 

 

 

 

 

 

 

 

 

 

AN0/RA0

19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

38

+3,3В

 

 

 

 

 

 

 

 

 

AN6/RP16/RC0

 

 

 

 

 

 

 

 

 

 

18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP11/RB11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MCLR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

лабораторной работе.26

 

 

AN7/RP17/RC1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP10/RB10

 

 

 

 

 

 

 

 

 

 

 

 

RP21/RC5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

39

Vss

R105

 

 

 

 

 

27

 

 

 

 

 

 

 

 

 

 

 

 

 

AVdd

17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

40

Vdd

 

 

 

 

 

 

 

AN8/RP18/RC2

 

 

 

 

 

 

 

AVss

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Vcap

 

 

 

 

 

 

 

 

 

 

 

SA1

 

 

 

 

 

 

 

28

 

 

Vdd

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R111

 

 

VD1 Vss

 

6

 

 

 

 

 

 

 

 

 

 

 

41

RP5/RB5

1k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP15/RB15

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

42

RP6/RB6

 

 

 

 

 

 

 

29

 

 

Vss

 

 

 

 

 

 

 

RP14/RB14

14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP25/RC9

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RA2/OSC2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP24/RC8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43

RP7/RB7

 

 

 

 

 

 

 

31

 

 

 

 

22

 

21

 

20

 

19

 

18

RA7

 

13

 

 

 

15

 

14

 

 

13

 

12

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

44+3,3В

 

 

 

 

 

 

 

 

 

RA3

 

 

 

 

 

 

17

 

16

 

 

 

 

 

 

 

 

 

RP22/RC7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AN3/RA3

AN2/RA2RP12/RB12

AN1/RA1

AN0/RA0

MCLR

AVdd

12

AVss

RP15/RB15

RP14/RB14

RA7

RA10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP8/RB8

R106

RP22/RC7

RP24/RC8

RP25/RC9

33

 

 

RP4/RB4

 

 

 

RP9/RB9

 

1

 

 

 

 

R112

VD2

 

P9/RB9

RP22/RC6

Vss

 

 

Vcap

RP10/RB10

RP11/RB11

RP13/RB13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

32

 

 

RA8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP22/RC6

 

2

 

 

 

 

 

 

 

 

 

 

 

SA2

 

 

 

 

 

 

 

 

 

 

 

 

 

23

 

AN4/RP2/RB2

 

 

 

RP19/RC3

 

RP20/RC4

 

RP21/RC5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP13/RB13

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

3

4

5

25

 

AN6/RP16/RC0RA49

 

RA9

 

 

 

 

Vss

 

Vdd

 

RP5/RB5

 

RP6/RB6

 

RP7/RB7

 

 

RP8/RB8

RP11/RB11

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1k

 

 

 

 

 

 

24

 

AN5/RP3/RB3

10

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP12/RB12

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+3,3В

 

 

 

 

 

 

 

 

6

7

8

34

35

36

37

38

39

 

40

 

41

42

 

43

44

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

26

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R105

 

 

 

 

 

27

 

AN7/RP17/RC1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP10/RB10

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AN8/RP18/RC2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Vcap

 

 

 

 

 

 

 

 

 

 

 

 

 

SA1

 

 

 

 

 

 

 

 

 

 

 

 

 

28

 

Vdd

 

 

 

 

 

 

 

R112

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Vss

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1k

 

 

 

 

 

 

29

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Vss

 

 

 

 

 

 

dsPIC33fj32mc204

 

 

 

 

 

 

RP25/RC9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RA2/OSC2

 

 

 

 

 

 

VD2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP24/RC8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+3,3В

 

 

 

 

 

 

 

 

RA3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP22/RC7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

32

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R106

 

 

 

 

 

 

RA8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP22/RC6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

33

 

RP4/RB4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RP9/RB9

1

 

 

 

 

 

 

 

 

 

 

 

 

 

SA2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RA4

RA9

RP19/RC3

RP20/RC4

RP21/RC5

Vss

 

Vdd

RP5/RB5

RP6/RB6

RP7/RB7

RP8/RB8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

34

 

35

 

36

 

37

 

38

 

39

 

40

 

 

41

 

42

 

 

43

 

44

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 20.17 – Схема электрическая принципиальная

 

 

 

 

 

В схеме два дискретных датчика оформлены в виде двух переключателей SA1 и SA2, подключенных к выводам RA2 и RA3 микроконтроллера.

Два дискретных выхода оформлены в виде двух светодиодов VD1 и VD2, подключенных к выводам RB15 и RB13 микроконтроллера соответственно.

1. 5 Листинг программы для создания проекта LR20_1

98

#include <P33FJ32MC204.h>

 

#define FOSC 7370000

 

#define FCY (FOSC / 2)

// Настройка частоты выполнения

 

// инструкций

_FOSCSEL(FNOSC_FRC)

//Настройка работы микроконтроллера

 

//от внутреннего тактового генератора

void main()

 

{

 

TRISBbits.TRISB15 = 0;

// Выход VD1 (RB15)

while (1)

 

{

 

__delay32(FCY);

//Организация временной задержки

LATBbits.LATB15 = 1;

 

__delay32(FCY);

 

LATBbits.LATB15 = 0;

 

}

 

}

 

1.6Листинг программы для создания проекта LR20_2

#include <P33FJ32MC204.h>

_FOSCSEL(FNOSC_FRC) // Настройка работы микроконтроллера

//от внутреннего тактового генератора

void Init_Timer1()

{

T1CON = 0; IFS0bits.T1IF = 0; IEC0bits.T1IE = 1; TMR1 = 0x0000; PR1 = 0x0E65;

T1CONbits.TON = 1;

}

int _ms = 0;

//Инициализация таймера T1

//Сброс таймера

//Сброс флага прерывания таймера

//Разрешение прерывания от таймера

//Обнуление текущего значения таймера

//Задание периода таймера

//Разрешение работы таймера и

//Его запуск

99

void __attribute__((interrupt, no_auto_psv)) _T1Interrupt()

// Прерывание таймера T1 по совпадению

{

_ms++;

IFS0bits.T1IF = 0; // Сброс флага прерывания таймера TMR1 = 0; // Перезапуск таймера

}

void main()

{

Init_Timer1();

TRISBbits.TRISB15 = 0; // Выход VD1 (RB15)

while (1)

{

if (_ms < 1000)

{

LATBbits.LATB15 = 0;

}

else if (_ms < 2000)

{

LATBbits.LATB15 = 1;

}

else

{

_ms = 0;

}

}

}

1.7 Листинг программы для создания проекта LR20_3

#include <p33fj32mc204.h>

#define FOSC 7370000 #define FCY (FOSC/2)

_FOSC(OSCIOFNC_ON & POSCMD_NONE)

//Отключение дополнительной функции порта RA2 – выход // тактирующего сигнала внутреннего генератора

_FOSCSEL(FNOSC_FRC)

// Настройка работы от

 

// внутреннего тактового

100