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学习深入浅出第三讲外部中断的主要内容,如果未能解决你的问题,请参考以下文章

zigbee学习深入浅出第一讲

ZigBee案例笔记 -- 外部中断

ZigBee案例笔记 -- 外部中断

51单片机学习笔记之中断(外部中断定时器中断中断嵌套)

zigbee深入浅出第二讲硬件相关IO操作

Notes 20180311 : String第三讲_深入了解String