我看到一个程序,是个用按键控制灯亮的程序,按键是连在extint4567引脚上的<br />在main函数里,调用了keyledtest()函数<br /><br />void KeyLedTest (void)<br />{<br /> U32 dwVal;<br /><br /> //设置IO 口PORT G<br /> rPCONG |= 0xff00;<br /><br /> //设置中断<br /> rINTMOD &= ~MASK_BIT(21);<br /> rINTCON &= ~MASK_BIT(1);<br /><br /> //设置EXTINT4,5,6,7中断模式,我们这里使用低电平触发<br /> rEXTINT &= 0xffff; //先清除EXTINT4,5,6,7的相应设置bit位<br /><br /> for (;;)<br /> {<br /> dwVal = rINTPND; <br /> if ((dwVal & MASK_BIT(21)) == 0)<br /> {<br /> continue;<br /> }<br /><br /> //EXTINTPND 寄存器,判断是哪个外部中断触发<br /> dwVal = rEXTINTPND;<br /><br /> if ((dwVal & MASK_BIT(EXTINT4)) != 0)<br /> {<br /> rEXTINTPND |= MASK_BIT(EXTINT4);<br /> //外部中断4 产生了,点亮LED1<br /> sysUtilsLightLed (LED1, TRUE);<br /> }<br /><br /> if ((dwVal & MASK_BIT(EXTINT5)) != 0)<br /> {<br /> rEXTINTPND |= MASK_BIT(EXTINT5);<br /> //外部中断4 产生了,点亮LED2<br /> sysUtilsLightLed (LED2, TRUE);<br /> }<br /><br /> if ((dwVal & MASK_BIT(EXTINT6)) != 0)<br /> {<br /> rEXTINTPND |= MASK_BIT(EXTINT6);<br /> //外部中断4 产生了,点亮LED3<br /> sysUtilsLightLed (LED3, TRUE);<br /> }<br /><br /> if ((dwVal & MASK_BIT(EXTINT7)) != 0)<br /> {<br /> rEXTINTPND |= MASK_BIT(EXTINT7);<br /> //外部中断4 产生了,点亮LED1,2,3<br /> sysUtilsLightLed (LED_ALL, FALSE);<br /> }<br /> //最后清除中断位<br /> //rI_ISPC |= MASK_BIT(21);<br /> rI_ISPC = dwVal;<br /> }<br />}<br /><br /><br /><br />可是,我怎么就知道这个keyledtest就是中断函数,而不是普通函数?<br /><br />在51里,可以用interrupt来标明这个函数是中断函数,可是在这里,没看到任何标识啊,这是怎么回事? |
|