- void __irq IRQ_KEY2(void)
- {
- rSRCPND |=(1<<4); //清除中断标志位
- rINTPND |=(1<<4);
- rEINTPEND |=(1<<4); //清除ENIT4的中断标志位
- LED2_ON;
- Delay();
- LED2_OFF;
- }
- void __irq IRQ_KEY3(void)
- {
- rSRCPND |=(1<<2); //清除中断标志位
- rINTPND |=(1<<2);
- LED3_ON;
- Delay();
- LED3_OFF;
- }
- void __irq IRQ_KEY4(void)
- {
- rSRCPND |=1<<0; //清除中断标志位
- rINTPND |=1<<0;
- LED4_ON;
- Delay();
- LED4_OFF;
- }
- void Eint_Init(void)
- {
- rGPFCON &=~(0x33f);
- rGPFCON |=0x22a; //设置GPF0、1、2、4为中断输入功能
- rEXTINT0 = 0x20222; //ENIT0、1、2、4下降沿触发中断
- rSRCPND = 0x17; //清除ENIT0、1、2、4的中断标志位
- rINTPND = 0x17; //清除ENIT0、1、2、4的中断标志位
- rEINTPEND=(1<<4); //清除ENIT4的中断标志位
- rINTMOD=0x0; //所有中断为IRQ中断
- rINTMSK &= ~0x17; //ENIT0、1、2、4中断服务有效(这里就是使能外部中断)
- rEINTMASK &= ~(1<<4);//EINT4中断服务有效
- pISR_EINT0 = (unsigned)IRQ_KEY4; //设置各中断服务子程序地址
- pISR_EINT1 = (unsigned)IRQ_KEY1;
- pISR_EINT2 = (unsigned)IRQ_KEY3;
- pISR_EINT4_7 = (unsigned)IRQ_KEY2;
- }
- void Main(void)
- {
- rGPBCON &=~((3<<10)|(3<<12)|(3<<14)|(3<<16)); //对GPBCON[10:17]清零
- rGPBCON |=((1<<10)|(1<<12)|(1<<14)|(1<<16)); //设置GPB5~8为输出
- rGPBUP &=~((1<<5)|(1<<6)|(1<<7)|(1<<8)); //设置GPB5~8的上拉功能
- rGPBDAT |=(1<<5)|(1<<6)|(1<<7)|(1<<8); //关闭LED
- Eint_Init();
- while(1);
- }
|