Файл: Курсовой проект по курсу Проектирование цифровых вычислительных (у правляющих) устройств.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 17.03.2024
Просмотров: 57
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
// запрещаем прерывания по освобождению буферного
//регистра
}
}
}
//////////////////////////////////////////////////
//
// Основная функция программы
//
int main(void)
{
unsigned Mdi = M_DI; // счётчик периода опроса дискр. входов
unsigned Mdo = M_DO; // счётчик периода обновления дискр. выходов
unsigned Mcomm = M_COMM; // счётчик периода передачи на ВУ
// Вызываем функцию пользовательской инициализации
Init();
// Основной бесконечный рабочий цикл программы
while (1) {
// Ожидаем установку флага COUNTFLAG системного таймера
// Сброс флага происходит при чтении регистра SysTick->CTRL автоматически
while (!(SysTick -> CTRL & SysTick_CTRL_COUNTFLAG_Msk));
// === Начало рабочего цикла ===
// Интервал Tai истёк - выполняем ввод и обработку аналоговых данных
ProcessAInputs();
// Отсчитываем интервал Tdi, по истечению выполняем ввод и обработку дискретных данных
if (0 == Mdi--) {
Mdi = M_DI; // перезагружаем счетчик периода опроса дискр. входов
ProcessDInputs(); // вводим и обрабатываем дискр. данные
}
// Отсчитываем интервал Tdo, по истечению обновляем состояние дискр. выходов
if (0 == Mdo--) {
Mdo = M_DO; // перезагружаем счетчик периода обновления дискр. выходов
ProcessDOutputs(); // выводим дискр. данные
}
// Отсчитываем интервал Tcomm, по истечению готовим данные для ВУ и инициируем передачу
if (0 == Mcomm--) {
Mcomm = M_COMM; // перезагружаем счетчик периода передачи
StartTX(); // готовим данные для ВУ и инициируем передачу
}
} // === Конец рабочего цикла ===
}
Приложение Б.
Перечень элементов
//регистра
}
}
}
//////////////////////////////////////////////////
//
// Основная функция программы
//
int main(void)
{
unsigned Mdi = M_DI; // счётчик периода опроса дискр. входов
unsigned Mdo = M_DO; // счётчик периода обновления дискр. выходов
unsigned Mcomm = M_COMM; // счётчик периода передачи на ВУ
// Вызываем функцию пользовательской инициализации
Init();
// Основной бесконечный рабочий цикл программы
while (1) {
// Ожидаем установку флага COUNTFLAG системного таймера
// Сброс флага происходит при чтении регистра SysTick->CTRL автоматически
while (!(SysTick -> CTRL & SysTick_CTRL_COUNTFLAG_Msk));
// === Начало рабочего цикла ===
// Интервал Tai истёк - выполняем ввод и обработку аналоговых данных
ProcessAInputs();
// Отсчитываем интервал Tdi, по истечению выполняем ввод и обработку дискретных данных
if (0 == Mdi--) {
Mdi = M_DI; // перезагружаем счетчик периода опроса дискр. входов
ProcessDInputs(); // вводим и обрабатываем дискр. данные
}
// Отсчитываем интервал Tdo, по истечению обновляем состояние дискр. выходов
if (0 == Mdo--) {
Mdo = M_DO; // перезагружаем счетчик периода обновления дискр. выходов
ProcessDOutputs(); // выводим дискр. данные
}
// Отсчитываем интервал Tcomm, по истечению готовим данные для ВУ и инициируем передачу
if (0 == Mcomm--) {
Mcomm = M_COMM; // перезагружаем счетчик периода передачи
StartTX(); // готовим данные для ВУ и инициируем передачу
}
} // === Конец рабочего цикла ===
}
Приложение Б.
Перечень элементов