zigbee学习深入浅出第三讲外部中断
Posted 超级可爱的夹心小朋友
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zigbee学习深入浅出第三讲外部中断相关的知识,希望对你有一定的参考价值。
外部中断的配置
1.初始化IO口工作在普通IO、上拉输入状态。 PxSEL PxDIR PxINP
2.首先开IO口组中断,由 P0IE=1(P0端口中断) P1IE P2IE决定(小组使能)
3.开组内对于的具体某IO口中断,由P0IEN P1IEN P2IEN 决定(终端使能)
4上升沿还是下降沿触发,PICTL寄存器决定,0代表上升沿,1代表下降沿
D7 D6 D5 D4 D3 D2 D1 D0
I/O驱动能力 未用 未用 未用 P2_0~P2_4 P1_3~P1_7 P1_0~P1_3 P0_0~P0_7
注:D0位置一,即PICTL&=0x01;//0000 0001,表明P0组(P0_0~P0_7)都是下降沿.
5.开CPU总中断EA=1 (总中断使能)
中断函数:
#pragma vector=PxINT_VECTOR
__interrupt void fn()
PxIFG=0;//清零
PxIF=0;
代码 以P0_5例子,下降沿触发
#include<iocc2530.h>
void delay()
int i,j;
for(i=0;i<1000;i++)
for(j=0;j<30;j++);
void main()
P0SEL&=0xDF ;//1101 1111 普通IO口
P0DIR&=0xDF ;//1101 1111输出
P0INP&=0xDF ;//1101 1111上下拉模式
P2INP&=0xDF ; //1101 1111上拉模式
EA=1; //
P0IE=1; //如果P1IE要设置为1,那么我们不能直接用P1IE=1,IEN2 |=0x10;//0001 0000 8位整除的可以直接置一,8位不能整除要加上
IEN2 |=0x10;//相当于P1IE=1
P0IEN|= 0x20; //0010 0000 设置三个中断使能标志位,让相应的中断开关合上,开关合上表示中断开启
PICLE&=0x01;//0000 0001把P0这一组配置成下降沿触发
while(1)
#pragma vector=P0INT_VECTOR
__interrupt void 函数名()
if(P0IFG & 0x20)//0010 0000
//P0组的第五位P0_5引发了外部中断
delay() ; //延迟函数用来消抖
if(0==P0_5)
//说明确实是连接在P0_5的按钮触发了外部中断
P1_0^=1;//异或操作 原来是0变成1,原来是1变成0
P0IFG=0;
P0IF=0;
以上是关于zigbee学习深入浅出第三讲外部中断的主要内容,如果未能解决你的问题,请参考以下文章