Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

// включенные файлы *****************************************************

#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 устанавливается как выходной - сигналы

                // управления для ЖКИ

}

//********************************************************************

//RTI_isr: подпрограмма прерывания по RTI

//********************************************************************

void RTI_isr(void) {

 unsigned int new_count;

 unsigned int pulse_count;

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже