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

📄 main.c

📁 LPC2103开发板上按键控制GPIO输入
💻 C
字号:
/**********************************************************
 成都模数科技
 http://www.moshukeji.com
 文 件 名: main.c
 修改时间: 2007-09-14
 版 本 号: v1.00
 功能描述: 
***********************************************************/


#define IN_MAIN
#include "config.h"
#pragma import(__use_no_semihosting_swi)        //don't delete this line


#define  LED0  0x00000010
#define  LED1  0x00000020
#define  LED2  0x00000040
#define  KEY0  0x00000080
#define  KEY1  0x00000400
#define  KEY2  0x01000000

/*********************************************************************************************************
** 函 数 名:void  IRQ_Exception(void)
** 入口参数:无
** 出口参数:无
** 功能描述:异常中断句柄,根据需要可以修改它,但不用删除
********************************************************************************************************/
void  IRQ_Exception(void)
{
}



/****************************************************************************
* 名称:DelayNS()
* 功能:软件延时
* 入口参数:dly		延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<5000; i++);
}


/****************************************************************************
* 名称:void Light(uint8 LEDNum,uint8 i)
* 功能:控制LED闪烁
* 入口参数:LEDNum-选择所控制的LED(0、1、2)
            i-闪烁次数
* 出口参数:无
****************************************************************************/
void Light(uint8 LEDNum,uint8 i)
{
	switch(LEDNum)
	{
		case 0:
			for(;i>0;i--)
			{
				IOCLR=LED0;//对应IO口输出0
    			DelayNS(700);
				IOSET=LED0;//对应IO口输出1
    			DelayNS(700);		  //延时    			
			}
			break;
			
		case 1:
			for(;i>0;i--)
			{
				IOCLR=LED1;//对应IO口输出0
    			DelayNS(700);
				IOSET=LED1;//对应IO口输出1
    			DelayNS(700);		  //延时    			
			}
			break;
			
		case 2:
			for(;i>0;i--)
			{
				IOCLR=LED2;//对应IO口输出0
    			DelayNS(700);
				IOSET=LED2;//对应IO口输出1
    			DelayNS(700);		  //延时    			
			}
			break;
			
		default:
		    break;
		    
	
	}


}

/*********************************************************************************************************
** 函 数 名:void Main(void)
** 入口参数:无
** 出口参数:无
** 功能描述:主函数
********************************************************************************************************/
void Main(void)
{
	
	//初始化PLL-----------------
    TargetInit(VPBDIV_DATA, PLLCFG_DATA, MAMTIM_DATA);      // 不能删除,初始化锁相环和内存加速设置
    while((PLLSTAT & (1 << 10)) == 0);   //反映PLL 的锁定状态。为0 时,PLL 未锁定;为1 时,PLL 锁定到指定的频率。       
    
    
   //用户程序-----------------------------------------


   PINSEL0 &= 0xFFCF00FF;		//设置管脚连接GPIO   
   PINSEL1 &= 0xFFFCFFFF;
   IODIR|=LED0|LED1|LED2;     //设置GPIO方向
   IODIR&=~(KEY0|KEY1|KEY2);  //设置按键IO口为输入
   IOSET=LED0|LED1|LED2;   //初始化LED	
    
    while(1)
    {
    	//按键1
    	if((IOPIN&KEY0)==0) 
    	{
    		DelayNS(50);//按键防抖动
    		if((IOPIN&KEY0)==0) 
    		{
    			Light(0,2);
    		}    		   	
    	}
    	
    	//按键2
    	if((IOPIN&KEY1)==0) 
    	{
    		DelayNS(50);//按键防抖动
    		if((IOPIN&KEY1)==0) 
    		{
    			Light(1,2);
    		}
    		   	
    	}
    	
    	//按键3
    	if((IOPIN&KEY2)==0) 
    	{
    		DelayNS(50);//按键防抖动
    		if((IOPIN&KEY2)==0) 
    		{
    			Light(2,2);
    		}
    		   	
    	}
       	 	 
    }

}



/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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