微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 裸奔程序之外部中断检测按键

裸奔程序之外部中断检测按键

时间:11-20 来源:互联网 点击:

序地址

我们在2440addr.h头文件里面找到 #define pISR_EINT0 (*(unsigned *)(_ISR_STARTADDRESS+0x20))

我们在option.inc汇编头文件里面找到 _ISR_STARTADDRESS EQU 0x33ffff00 从上面二句我们知道,这是中断服务的起始地址。

pISR_EINT0是一个中断入口地址变量,把该中断处理函数的首地址传递给该变量,即中断入口地址。

一般来说,使用__irq这个关键词来定义中断处理函数,这样系统会为我们自动保存一些必要的变量,并能够在中断处理函数执行完后正确地返回。还需要注意的是,中断处理函数不能有返回值,也不能传递任何参数。

void __irq IRQ_KEY4(void)
{
rSRCPND |=1<0; //清除中断标志位
rINTPND |=1<0;

LED4_ON;
Delay();
LED4_OFF;
}

这是一个外部中断0的处理函数,

rSRCPND |=1<0;

rINTPND |=1<0;

执行完这二句后表示源挂起中断标志和具体某中断挂起标志都被清楚,其他外部中断1、2、4处理函数亦是如此。

———————————————————————————————————

到这里,这个main.c程序就讲解完毕啦。你懂了吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top