Скачиваний:
10
Добавлен:
05.09.2014
Размер:
2.09 Кб
Скачать
/*-------------------------------------------------------------------
Работа с двумя прерываниями.
При нажатии кнопки INT0 (линия Р2.10) светодиоды должны поменять направление зажигания.
Скорость перемещен	задается в прерывании от таймера
--------------------------------------------------------------------*/
   
#include "LPC17xx.h"
#include "leds.h"									//библиотека для работы со светодиодами
#include "timer.h" 									//библиотека для работы с таймерным прерыванием
 
#define EINT0		0x00000001						//присваиваем EINT0 значение   0x00000001
#define EINT0_EDGE	0x00000001

char flag=1;						   				//переменная- флаг, который обрабатывается во внешнем прерывании
int led=0;
										 			//на ноге Р2.10 должно возникнуть прерывание
void sleep (int ticks) 
	{			  									 //функция формирующая временную задержку
		int i;							 		
		for(i=0; i<ticks; i++);
	}


void EINT0_IRQHandler (void)			    		//функция обработки прерыавания, имя функции из 	startup_LPC17xx.s
   {
	   	LPC_SC->EXTINT = EINT0;						//сброс флага прерывания, после входа в прерывание
	   	flag=(flag+0x1)&0x01;			    		//обработка переменной флага
   }


unsigned long int EINTInit( void )					//функция инициализации прерывания от внешнего прерывания EINT0
	{
	  	LPC_PINCON->PINSEL4=0x00100000;				//т.к. контролирует линии ввода-вывода P2 [15:0]
													//0b01 для линии P2.10- режим EINT0 остальные ноги в режиме GPIO									 
	   	LPC_GPIOINT->IO2IntEnR=	0x00000400;			//для линии P2.10 прерывание по фронту
	  	LPC_SC->EXTMODE = EINT0_EDGE;				// INT0 граничный тригер 
	  	LPC_SC->EXTPOLAR = 0;						// INT0 - убывающий фронт по умолчанию 
	  	NVIC_EnableIRQ(EINT0_IRQn);			   		//разрешаем внешнее прерывание в NVIC
	  	return(1);
	}


 int main (void)
 {
 	SystemInit();				  				//инициализация МК
   	EINTInit();					  				//инициализация внешних прерываний
	LED_init();					  				//настройка портов на вывод
	timer0_init();				  				//настройка работы таймера

		while (1)								//рабочий цикл программы
		{

		}


	}													 
Соседние файлы в папке Interrupts