Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
//initialize_RTI:конфигурирует модуль RTI
// ********************************************************************
void initialize_RTI(void) {
RTICTL = 0x86; // устанавливается таймер RTI
RTIFLG = 0x80; //сбрасывается флаг RTIF
}
// ********************************************************************
Аккумулятор импульсов. Число импульсов, поступающих
// **********************************************************************
//initialize_PA: инициализация модуля аккумулятора импульсов МК 68HC12
// **********************************************************************
void initialize_PA(void) {
TIOS = 0x00; //Конфигурировать канал 7 для работы счетчика импульсов
TCTL1 = 0x00; //кодера - 3 оператора
OC7M = 0x00;
TSCR = 0x80; //Установить бит разрешения таймера
PACTL = 0x70; //Разрешить работу PA, режим счета событий, событие
// по фронту импульса,
}
Объединим теперь эту программу с программой для RTI, чтобы подсчитать число импульсов кодера, появившихся за интервал прерывания. Получив, этот результат, преобразуем его в число об/мин и выведем полученное значение на ЖК индикатор.
// **********************************************************************
//имя файла: motor.с
//автор: Steve Barrett and Daniel Pack
//дата создания: Mar 10, 2003
//последняя редакция: Mar 25, 2004
// **********************************************************************
// включенные файлы *****************************************************
#include <912b32.h>
#pragma interrupt_handler RTI_isr //объявить подпрограмму прерывания по RTI
// функции-прототипы ****************************************************
void initialize_ports(void); //инициализировать порты
void RTI_isr(void); //подпрограмма обслуживания прерываний RTI
void initialize_RTI(void); // инициализировать систему RTI
void initialize_PA(void); //инициализировать аккумулятор импульсов (PA)
void initialize_LCD(void); //
инициализировать ЖК индикатор
void display_count_LCD(unsigned int); //вывод текущего содержимого аккумулятора PA
// на ЖК индикатор
void putchars(unsigned char); //функция поддержки ЖКИ - вывести символ
void putcommands(unsigned char);// функция поддержки ЖКИ вывести команду
void delay_5ms(void); //задержка 5 мс
void delay_100us(void); //задержка 100 мкс
unsigned int old_count; //последнее значение, записанное в (PA)
int RTI_int_count =0; //используется для подсчета RTI прерываний
//главная программа****************************************************
void main(void) {
asm(" .area vectors(abs) \n" //inline assembly statement
".org 0xFFF0\n" //инициализация вектора прерываний RTI
".word _RTI_isr\n"
" .org 0xFFF8\n" // инициализация вектора reset для 68HC12 B32
" .word 0x8000, 0x8000, 0x8000, 0x8000\n"
" .text");
void initialize_ports(void); // инициализация портов
initialize_LCD; //инициализация ЖКИ
initialize_RTI; //инициализация модуля RTI
initialize_PA; //инициализация аккумулятора импульсов
asm("cli"); //разрешение глобального маскирования
//прерываний
while(1) //продолжение цикла до следующего прерывания
{
;
}
}
//********************************************************************
//********************************************************************
//initialize_ports: определяет направление передачи портов
//********************************************************************
void initialize_ports(void) {
DDRP = 0xFF; // порт PORTP устанавливается как выходной для ШИМ
DDRT = 0x00; // PORTT устанавливается как входной, вывод PORTT[7]
// в качестве входа аккумулятора импульсов PA
DDRB = 0xFF; // PORTB устанавливается как выходной - порт
// данных для ЖКД
DDRDLC = 0xFF; // PORT DLC устанавливается как выходной - сигналы
// управления для ЖКИ
Поделиться:
Популярные книги
Вонгозеро
1. Вонгозеро
Детективы:
триллеры
9.19
рейтинг книги
Кротовский, может, хватит?
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Сборник коротких эротических рассказов
Любовные романы:
эро литература
love action
7.25
рейтинг книги
Архонт
5. Стеллар
Фантастика:
боевая фантастика
рпг
7.80
рейтинг книги
Медиум
1. О чем молчат могилы
Фантастика:
фэнтези
7.90
рейтинг книги
Титан империи 8
8. Титан Империи
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Ведьма Вильхельма
Любовные романы:
любовно-фантастические романы
8.67
рейтинг книги
Волхв
3. Волшебник
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Я еще не барон
1. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода
1. Темный Патриарх Светлого Рода
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Пистоль и шпага
2. Штуцер и тесак
Фантастика:
альтернативная история
8.28
рейтинг книги
Корпулентные достоинства, или Знатный переполох. Дилогия
Фантастика:
юмористическая фантастика
7.53
рейтинг книги
Ученик. Книга 4
4. Ученик
Фантастика:
фэнтези
5.67
рейтинг книги
Часовое имя
4. Часодеи
Детские:
детская фантастика
9.56