www.pudn.com > lpc2146USB.rar > mainold.c


/****************************************Copyright (c)************************************************** 
**                               Guangzou ZLG-MCU Development Co.,LTD. 
**                                      graduate school 
**                                 http://www.zlgmcu.com 
** 
**--------------File Info------------------------------------------------------------------------------- 
** File name:			main.c 
** Last modified Date:  2004-09-16 
** Last Version:		1.0 
** Descriptions:		The main() function example template 
** 
**------------------------------------------------------------------------------------------------------ 
** Created by:			Chenmingji 
** Created date:		2004-09-16 
** Version:				1.0 
** Descriptions:		The original version 
** 
**------------------------------------------------------------------------------------------------------ 
** Modified by: 
** Modified date: 
** Version: 
** Descriptions: 
** 
********************************************************************************************************/ 
/******************************************************************************************************** 
* 功能:使能外部中断0和外部中断3,当外部中断0有效时,控制LED1取反;当外部中断3有效时, 
*      控制取反LED4。使用向量中断方式。 
* 说明:将跳线器JP12_LED1、JP11_BEEP短接,同时按住KEY1和KEY5,再全速运行程序。 
********************************************************************************************************* 
*/ 
#include "config.h" 
 
const uint32 BEEP = 1 << 7;					// P0.7控制蜂鸣器,低电平蜂鸣 
const uint32 LED1 = 1 << 18;				// P1.18控制LED1,低电平点亮 
 
/* 
********************************************************************************************************* 
** 函数名称:IRQ_Eint0() 
** 函数功能:外部中断EINT0服务函数,取反BEEP控制口。 
** 入口参数:无 
** 出口参数:无 
********************************************************************************************************* 
*/ 
void __irq IRQ_Eint2(void) 
{ 
  	IOSET=0x00800000; 
	 
   	while( (EXTINT&0x04)!=0 )				// 等待外部中断信号恢复为高电平	 
   	{  EXTINT = 0x04;						// 清除EINT0中断标志 
   	} 
      
   	VICVectAddr = 0x00;						// 通知VIC向量中断结束 
}		 
 
 
 
/* 
********************************************************************************************************* 
** 函数名称:IRQ_Eint3() 
** 函数功能:外部中断EINT3服务函数,取反LED1。 
** 入口参数:无 
** 出口参数:无 
********************************************************************************************************* 
*/ 
void __irq IRQ_Eint3(void) 
{   
	 
   	IOCLR=0x00800000; 
	while( (EXTINT&0x08)!=0 )				// 等待外部中断信号恢复为高电平	 
   	{  EXTINT = 0x08;						// 清除EINT3中断标志 
  	} 
    
   	VICVectAddr = 0x00;						// 通知VIC向量中断结束 
} 
			 
 
/* 
********************************************************************************************************* 
** 函数名称:main() 
** 函数功能:初始化外部中断0、3为向量中断,然后等待外部中断。 
** 使用说明: 
********************************************************************************************************* 
*/ 
int  main(void) 
{ 
  	//PINSEL0 = 0x00000000;			 
   	 
   	PINSEL0=0x80001505;       //RxD0 TxD0 SPI0 EINT2 
     
   	 
   	 
   	PINSEL1 = 0x00000301;					// 设置管脚连接,P0.16设置为EINT0,P0.20设置为EINT3 
   	IODIR=0x00B00C04; 
	 
   	IRQEnable();							// 使能IRQ中断 
   	 
   	/*  打开EINT0、EINT3中断(设置向量控制器,即使用向量IRQ) */ 
   	VICIntSelect = 0x00000000;				// 设置所有中断分配为IRQ中断 
   	VICVectCntl0 = 0x20 | 16;				// 分配EINT2中断到向量中断0 
   	VICVectAddr0 = (uint32)IRQ_Eint2; 		// 设置中断服务程序地址 
   	VICVectCntl1 = 0x20 | 17;				// 分配EINT3中断到向量中断1 
   	VICVectAddr1 = (uint32)IRQ_Eint3; 		// 设置中断服务程序地址 
   	EXTINT = 0x09;							// 清除EINT0、EINT3中断标志	 
    
   	VICIntEnable = (1 << 16) | (1 << 17);	// 使能EINT0、EINT3中断 
    
   	while(1);								// 等待中断 
   	return(0); 
} 
/********************************************************************************************************* 
**                            End Of File 
********************************************************************************************************/