⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 irq12.c

📁 几个关于lpc2103开发板的keil例程
💻 C
字号:
#include<lpc2103.h>
//#define EINT0 (0x)
void inituart(void);
void printf_uart(char *);
void delay(int);

void __irq IRQ_EINT2(void)
{  	inituart();
 	while((((EXTINT&1<<2)<<9)&(IOPIN&1<<11))!=0)	 //key0
		{	
	 	  
			delay(10);
						//	if((IOPIN&1<<11)!=0)
			printf_uart("key0 is");
						//	delay(5000);
			 IOCLR|=1<<11;
					//	if((EXTINT&1<<2)==0)
						//	while()		 
		}
				//	while((EXTINT&1<<15)!=0);		   
	while((((EXTINT&1<<2)<<10)&(IOPIN&1<<12))!=0)	 //key1
		 {	
	 	 
			delay(10);
			printf_uart("key1 is");
				//delay(5000);
			IOCLR|=1<<12;
		 
		}
 	while((((EXTINT&1<<2)<<23)&(IOPIN&1<<25))!=0)		  //key2
		 
		{	
	 	  
			delay(10);
			printf_uart("key2 is");
			//delay(5000);
			IOCLR|=1<<25;
		 
		}
while((((EXTINT&1<<2)<<24)&(IOPIN&1<<26))!=0)				//key3
		 {	
	 	 
			delay(10);
			printf_uart("key3 is");
			//delay(5000);
			 IOCLR|=1<<26;
		 
	    }
 	EXTINT=0X4;
	VICVectAddr=0x00; //中断结束
}
main()
{ 	PINSEL0=0x00000000;
  	PINSEL1=0x00000000;
 
  	PINSEL0|=0x40000000;
  	EXTMODE|=0x00;	 //电平触发
  	EXTPOLAR|=0x4;	 //高电平有效
	EXTINT=4;		//一定要清零,否则一按REstart就进入中断
	VICIntSelect|=0x00000000;	 		//IRQ
  	VICIntEnable|=1<<16;	   //十六通道
    VICVectCntl0|=0x20|16;		  //最高优先级
    VICVectAddr0=(int)IRQ_EINT2;		//
		  	 
   	 	IODIR|=1<<11|1<<12;  	//	 输出
	 	IODIR|=1<<25|1<<26;   	//	 输出
	 	IOCLR|=1<<11;			  //低电平
		IOCLR|=1<<12;			 
 	 	IOCLR|=1<<25;
	  	IOCLR|=1<<26;
		  
		  
while(1)	 
 
 {	//IODIR|=1<<21;   
	  
	 	//IOSET|=1<<21;
	 //	delay(1000);
	 //	IOCLR|=1<<21;
		// delay(1000);
 	  
	IOSET|=1<<11;		   //key0  置高
	IOCLR|=1<<12;
	IOCLR|=1<<25;
	IOCLR|=1<<26;


	IOCLR|=1<<11;			  //KEY1 置高
	IOSET|=1<<12;
	IOCLR|=1<<25;
	IOCLR|=1<<26;

	IOCLR|=1<<11;			 //KEY2 置高
	IOCLR|=1<<12;
	IOSET|=1<<25;
	IOCLR|=1<<26;


	IOCLR|=1<<11;			   //KEY3 置高
	IOCLR|=1<<12;
	IOCLR|=1<<25;	
	IOSET|=1<<26;
		  

	IOCLR|=1<<11;				//复位
	IOCLR|=1<<12;
	IOCLR|=1<<25;
	IOCLR|=1<<26;




 }
 



}
 void inituart()					  //串口初始化
	{ 	
		long PTL;
		PINSEL0=0x5;
		U0FCR=0X7;
		PTL = (15000000/16)/9600;
		U0LCR=0X83;
		U0DLL=PTL%256;
		U0DLM=PTL/256;
		U0LCR=0X3;
	}
void delay(int a)				//软件延时
{ 	long i,j;
 	for(i=0;i<a;i++)
 	for(j=0;j<5000;j++)
 	;
}
void printf_uart(char *s)		  //输出字符串
{  while(*s!='\0')
			{ 
				U0THR=*s;
				s++;
		 		while((U0LSR&(0x40))==0)
		 		;
			}
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -