对KEY程序中的初始化P2端口函数进行解析
/*******************************************
函数名称:Init_PORT2
功 能:初始化PORT2端口
********************************************/
void Init_PORT2(void)
{
P2DIR &=~BIT7; //P2.7设置为输入
P2IES |= BIT7; //下降沿中断
P2IFG = 0x00; //中断标志清零
P2IE |= BIT7; //使能时钟端口中断
P2SEL = 0x00; //P2口作为IO使用
}
P2DIR是方向寄存器,控制每个引脚上信号的方向。当P2DIR=0111 1111时,P2.7为输入,P2.0~P2.6为输出端。0输入,1输出。
P2IES是中断沿选择寄存器,用来选择对应引脚电平产生什么方向跳变时置位中断标志。0对应正跳变,1对应负跳变。P2IES=1000 0000时,对应P2.7管脚产生负跳变时置位中断标志。
P2IE中断使能寄存器置位表示允许对应的管脚在电平变化时产生中断
P2IFG 中断标志寄存器,表示对应引脚是否产生了由IES设定的电平跳变,在GIE置位的情况下,IFG某位置位,并且对应的IE中的位也置位,则会向CPU请求中断处理。0对应引脚未产生由IES设定的电平跳变,1产生。
P2SEL功能选择寄存器,某位置位表示将对应的管脚作为外围器件功能使用。
中断只要满足中断条件就触发,不论程序执行到哪里。
关于中断的种类有外界中断时钟中断等。
中断过程的理解:
设大明和小强在下棋。眼看小强就要输了,大明的女友来了,非要大明陪她逛街买衣服,于是大明不得不和小强商量,先把棋盘封了,等买完衣服后继续战斗。大明买完衣服回到棋盘前,虽然疲惫不堪,但还是技高一筹,轻而易举将小强击败。这就是整个中断过程。
① 中断请求:大明的女朋友要他逛街;
② 中断响应:大明放下棋盘去陪女友逛街;
③ 现场保护:把棋盘先封了;
④ 中断处理:大明去陪女友逛街;
⑤ 恢复现场:把棋盘解封;
⑥ 中断返回:继续战斗。
其中,大明的女友就是中断源,如果大明把棋移到密室中,不让他女友打扰,就是中断屏蔽。