- •1. Операторы выбора языка c51: if и switch.
- •2. Операторы цикла языка с51: while, do…while, for.
- •3. Операторы перехода языка с51: break, continue, goto.
- •4. Программирование параллельным вводом/выводом в с51: операторы управления портами и отдельными разрядами портов. Примеры программ управления светодиодами и опроса контактов переключателей.
- •/* Программа управления светодиодом vd1 от кнопки sb1 */
- •5. Программирование таймеров микроконтроллеров mcs-51 на языке с51.
- •6. Программирование системы прерываний микроконтроллеров mcs-51 на языке с51.
- •7. Программирование последовательного ввода/вывода микроконтроллеров mcs-51 на языке с51.
- •8. Микроконтроллеры pic18: общая характеристика, особенности архитектуры и системы команд.
- •9. Язык с18 для pic-микроконтроллеров: структура программы, директивы препроцессора, ключевые слова.
- •10. Представление информации в языке с18: типы данных, переменные и константы.
- •11. Операции арифметические, поразрядные логические, логические и отношения в языке с18.
- •12. Операторы управления вычислительным процессом в языке с18.
- •13. Функции в языке с18: определение функции, прототип, библиотечные функции.
- •14. Функции формирования временных задержек в языке с18.
- •15. Программирование на языке с18 типовых функций управления и контроля: вывод информации в порт, управление отдельными разрядами портов, опрос переключателя.
- •16. Подключение жк-дисплея к pic-микроконтроллеру: структура жк-дисплея, функции управления дисплеем.
- •17. Аналого-цифровое преобразование в pic-микроконтроллерах: структура внутреннего ацп, функции управления ацп на языке с18.
- •18. Реализация широтно-импульсной модуляции в pic-микроконтроллерах: параметры шим, функции управления шим на языке с18.
- •Void ClosePwm1(void);
- •Void OpenPwm1(char period);
- •Void SetDcpwm1(unsigned int dutycycle);
- •19. Прерывания в pic18: источники прерываний, управляющие биты, программирование прерываний на языке с18.
- •20. Динамическое управление линейным дисплеем на семисегментных индикаторах в pic-микроконтроллерах.
- •21. Интерфейсы мпс: понятие и характеристики. Стандартные интерфейсы мпс.
- •22. Внешние интерфейсы мпс: основные параметры, последовательные и параллельные, синхронные и асинхронные, способы соединения устройств.
- •23. Интерфейс rs-232: назначение, основные технические характеристики, принципы передачи данных.
- •24. Интерфейс ирпс: назначение, основные технические характеристики, принципы передачи данных.
- •25. Интерфейсы rs-422 и rs-485: назначение, основные технические характеристики, принципы передачи данных.
- •26. Интерфейс spi: назначение, основные технические характеристики, принципы передачи данных.
- •27. Интерфейс i2c: назначение, основные технические характеристики, принципы передачи
- •28. Интерфейс can: общее описание и основные параметры, виды и форматы сообщений в can.
- •29. Интерфейс can: арбитраж, обнаружение и обработка ошибок, скорость передачи и длина сети.
6. Программирование системы прерываний микроконтроллеров mcs-51 на языке с51.
Разрешение и запрещение прерываний от таймеров/счетчиков выполняется битами регистра разрешения прерываний IE.
Формат регистра разрешения прерываний IE:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Разряды |
EA |
- |
- |
ES |
ET1 |
EX1 |
ET0 |
EX0 |
|
EA – бит общего разрешения: 0 – все прерывания замаскированы, 1 – каждый источник разрешается своим собственным битом IEx;
ES - разрешение прерывания от УАПП;
ET1, ET0 – разрешение прерывания от Т/С1, Т/С0
EX1, EX0 – разрешение прерывания от ,
Имеется возможность устанавливать приоритеты запросов прерывания (в случае их одновременного поступления) с помощью битов регистра управления приоритетами IP.
Формат регистра управления приоритетами IP:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Разряды |
- |
- |
- |
PS |
PT1 |
PX1 |
PT0 |
PX0 |
|
PS - бит приоритета УАПП;
PT1, PT0 – биты приоритетов Т/С1, Т/С0;
PX1, PX0 – биты приоритетов ,;
бит=1 – высший приоритет, 0 – низший.
В языке программирования С51 каждому прерыванию присвоен свой номер.
Номера прерываний для МК 8051
Номер прерывания |
Источник прерывания |
0 |
Внешнее прерывание INT0 |
1 |
Прерывание таймера 0 |
2 |
Внешнее прерывание INT1 |
3 |
Прерывание таймера 1 |
4 |
Прерывание последовательного порта |
Для объявления функций-обработчиков прерываний в С51 используется ключевое слово interrupt с указанием номера прерывания.
Пример объявления функции-обработчика прерывания таймера 0:
void isr_tmr0(void) interrupt 1
{
………….. // тело функции
}
Исследование внешних запросов прерывания
Каждое из внешних прерываний INT0 и INT1 может быть вызвано либо низким уровнем (логический 0) или переходом из 1 в 0 сигналов на выводах микроконтроллера P3.2, P3.3, что определяется состоянием битов IT0 и IT1 в регистре TCON. При поступлении запросов внешнего прерывания INT0, INT1 устанавливаются флаги IE0, IE1 в регистре TCON, которые инициируют вызов соответствующей подпрограммы обслуживания прерывания. Сброс этих флагов выполняется аппаратурно (автоматически внутренними средствами МК) только в том случае, если прерывание было вызвано переходом из 1 в 0 сигнала на входах INT0, INT1. Если же прерывание было вызвано низким уровнем (логическим 0) входного сигнала, то сброс флагов IE0, IE1 выполняет соответствующая подпрограмма обслуживания прерывания путем воздействия на источник прерывания с целью снятия им запроса.
Рассмотрим простейшую программу, в которой запросом прерывания является изменение состояния линии порта Р3.2 с высокого уровня на низкий, т.е. 1 0. Такой запрос прерывания называется INT0.
/*программа исследования внешнего прерывания INT0*/
#include<reg51.h>
int count = 0;
void isr_ex0(void) interrupt 0
{
count++;
}
void main(void)
{
IT0 = 1; // прерывание по перепаду 1 0
EX0 = 1; // разрешение внешнего прерывания INT0
EA = 1; // глобальное разрешение прерываний
while( 1 );
}
Исследование прерывания от таймера
Недостатком программ формирования временных задержек с помощью таймеров МК 8051, является то, что МК большую часть времени занят опросом состояния флага переполнения таймера и никакой полезной работы в это время не выполняет. Поэтому иным решением является использование прерывания при переполнении таймера. При этом основная программа только инициализирует и запускает таймер, а в программе-обработчике прерывания производятся все необходимые операции, связанные с отсчетом времени: изменение состояния портов, генерация импульсов, отсчет интервалов.