Предыдущая Следующая

if (flagn_knl==l) {

flagn_knl=0;

UART0tx_byte('0') UART0tx_byte(11') UART0tx_byte('2') UART0tx_byte('3') UART0tx_byte('4') UART0tx_byte('5') UART0tx_byte('6 UARTOtx_byte( UART0tx_byte UART0tx_byte( UART0tx_byte(

//инициализация системы //запрет прерываний //инициализация прерываний //инициализация ТО ; //разрешение прерываний //задержка на сброс ЖКИ //инициализация ЖКИ //

//очистка экрана ЖКИ //инициализация модуля UART0 на скорость обмена 115200 бит/с //Погасить светодиоды 1, 2

//Начало основного цикла

//нажималась ли кнопка 0

//да, сбросить флаг нажатия

//очистка экрана ЖКИ

simw = '!1;

j); //вывести символ на ЖКИ с адресом j ОЗУ ЖКИ ; //передать символ через UART0

//нажималась ли кнопка 1

//да, сбросить флаг нажатия

)

'7') |('8')

) )

UART0tx_byte('В') UART0tx_byte('С')

}

}

/I------------------------------------------------------------------------

В отличие от предыдущих проектов, программа обслуживания UART0 использует прерывания по приему байта через UART0, поскольку прием байта от внешнего устройства является для программы событием, о времени наступления которого она «не знает». В файлах hardware.c и hardware.h этого проекта дополнительно содержатся, соответственно, функция-обработчик прерывания по приему байта через UART0 и объявление этой функции. Файл hardware.c этого проекта приведен далее, а фрагмент исходного текста, который необходимо добавить в файл hardware.h, выглядит следующим образом:

static void UARTOInterrupt(); //объявление функции обработчика

//прерываний от UART0

Файл hardware.c программы обслуживания UART0

//------------------------------------------------------------------------

// Специальные функции (с учетом обслуживания UART0)

//------------------------------------------------------------------------

tinclude "hardware.h" // подключение специальных заголовков и определений

tinclude "uart.h" // подключение специальных заголовков и определений

volatile extern U8 rx_byte; //принятый байт через UARTO static U8 i=0; //адрес в ОЗУ ЖКИ (адрес индикации)

//Константы инициализации системы

tdefine FOSC 14745600 //Частота кварцевого резонатора в Гц

tdefine VALUEOFM 4 //соответствует PLLCFG_bit.MSEL=3

tdefine CCLK (FOSC*VALUEOFM) //CCLK = 58.9824 МГц

tdefine PCLK (CCLK/4) //соответствует VPBDIV_bit.VPBDIV=0;

tdefine PLOCK 0x0400

//FCCO = CCLK*2*P = 156...320 МГц, значит, P=2, что соответствует PLLCFG_bit.PSEL=l;

tdefine VIC_TIMER0_bit (1 « VIC_TIMER0) tdefine VIC_UART0_bit (1 « VIC_UART0)

//Инициализация системы -------------------------------------------------

void CPUinit(void) {

//Настройка PLL (ФАПЧ)

PLLCFG_bit.MSEL=3; //См. расчет PLL в секции tdefine этого файла PLLCFG,_bit.PSEL=l; //См. расчет PLL в секции tdefine этого файла PLLFEED=0xAA; PLLFEED=0x55;


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_316.html on line 176

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book4_316.html on line 176

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book4_316.html on line 176