Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВОЙ ПРОЕКТ по дисциплине «Микропроцессорные средства».pdf
Скачиваний:
32
Добавлен:
26.03.2015
Размер:
2.2 Mб
Скачать

Инв. № подл. Подп. и дата Взам. инв. № Инв. № дубл. Подп. и дата

5 РАЗРАБОТКА АЛГОРИТМА

Алгоритм функционирования программы (рисунок 18) включает в себя

следующие основные блоки:

включение – инициализация регистров микроконтроллера и переменных программы. Включается UART на прием и передачу установкой битов RXEN и TXEN регистра UCSRB. Скорость приема-передачи устанавливается регистром UBRR. Разрешаются внешние прерывания INT0 и INT1 установкой битов INTF0 и INTF1 регистра GICR по спадающему фронту установкой битов ISC01 и ISC11 и сбросом битов ISC00 и ISC10 регистра MCUCR. Установка значения переменной счетчика в 0;

получение пакета – при получении байта элементы массива пакета сдвигаются на одну позицию вправо. Последнему элементу массива присваивается значение полученного байта. Пакеты отправляются с бортового ПК через определенный интервал времени;

проверка пакета – проверка значения заголовка пакета, а также проверка контрольной суммы пакета;

исполнение команды – если проверка пройдена удачно, то выполняется команда, номер которой пришел в пакете;

формирование ответа – после выполнения команды формируется пакетответ, для которого также вычисляется контрольная сумма;

отправка ответа – побайтная отправка сформированного пакета-ответа.

 

 

 

 

 

Устройство измерения расхода

Лист

 

 

 

 

 

Изм.

Лист

№ докум.

Подп.

Дата

топлива

28

 

 

 

 

 

 

 

 

 

 

 

 

 

Копировал

Формат А4

Инв. № подл. Подп. и дата Взам. инв. № Инв. № дубл. Подп. и дата

Рисунок 18 – Алгоритм работы

 

 

 

 

 

Устройство измерения расхода

Лист

 

 

 

 

 

Изм.

Лист

№ докум.

Подп.

Дата

топлива

29

 

 

 

 

 

 

 

 

 

 

 

 

 

Копировал

Формат А4

Инв. № подл. Подп. и дата Взам. инв. № Инв. № дубл. Подп. и дата

6 РАЗРАБОТКА ПРОГРАММЫ

Для разработки программы был выбран язык C, так как программирование на Ассемблере очень трудоемко и ориентировано на конкретную архитектуру ЭВМ. Язык C, как язык программирования высокого уровня, свободен от этих недостатков. Он не связан с конкретной архитектурой ЭВМ (электронно вычислительная машина). Компиляторы языка функционируют на разных по архитектуре ЭВМ. Технология подготовки и отладки программ на C характерна для языков высокого уровня (Fortran, Pascal, Ada). В то же время ему присущи многие черты языков “низкого уровня” (доступ к адресам объектов и работа с ними, работа с битовыми величинами), позволяющие организовать эффективное управление устройствами и программами. По объему занимаемой памяти и времени выполнения программы на C близки программам на Ассемблере. В определенном смысле C занимает промежуточное положение между языками высокого уровня и машинно-ориентированными языками.

Впрограмме имеется 3 глобальных переменных:

unsigned short count_0 – счетчик внешних прерываний от INT0;

unsigned short count_1 – счетчик внешних прерываний от INT1;

char packet[6] – массив байтов для получения и отправки пакетов;

15 функций:

char getchar(void) – получение байта через UART;

void putchar(char c) – отправка байта через UART;

void initUART(void) – инициализация и настройка UART;

void initInterrupt(void) – инициализация и настройка внешних прерываний;

void int0(void) – функция для внешнего прерывания от INT0;

void int1(void) – функция для внешнего прерывания от INT1;

unsigned short crc16(const char * msg, unsigned short msgSize) – расчет контрольной суммы для массива байтов;

 

 

 

 

 

Устройство измерения расхода

Лист

 

 

 

 

 

Изм.

Лист

№ докум.

Подп.

Дата

топлива

30

 

 

 

 

 

 

 

 

 

 

 

 

 

Копировал

Формат А4

Инв. № подл. Подп. и дата Взам. инв. № Инв. № дубл. Подп. и дата

unsigned char checkCRC(const char * msg) – проверка контрольной суммы пакета;

void createPacket1() – формирование пакета-ответа со значением счетчика внешних прерываний от INT0;

void createPacket2() – формирование пакета-ответа со значением счетчика внешних прерываний от INT1;

void createPacket3() – формирование пакета-ответа со значением разности счетчиков внешних прерываний от INT0 и INT1;

void analyzePacket() – анализ полученного пакета от ПК;

void sendPacket() – отправка пакета-ответа на ПК;

void receivePacket() – чтение пакета от ПК;

void main(void) – главная функция программы.

 

 

 

 

 

Устройство измерения расхода

Лист

 

 

 

 

 

Изм.

Лист

№ докум.

Подп.

Дата

топлива

31

 

 

 

 

 

 

 

 

 

 

 

 

 

Копировал

Формат А4