zigbee CC2530 系列教程 5 外部中断实验

所有课程见此链接:

zigbee CC2530 系列教程 0 课程介绍

4.4外部中断实验

4.4.1 实验目的

了解使用外部中断的方法,在中断处理函数中切换LED的状态。

4.4.2 实验讲解

首先根据开发板硬件原理图确定LED与CC2530芯片的连接引脚,如图4-4所示。

图4-4开发板LED和按键原理图

与上一节相同,D3连接在芯片的P10引脚,按键S3连接在芯片的P04引脚,按照4.1节点亮单个LED的说明,我们对P10配置为输出。

CC2530 的外部中断我们需要配置三个寄存器P0IEN、PICTL、P0IFG、IEN1,配置寄

存器将按键引脚P04的中断使能与总中断打开,使用到的寄存器如表4-2所示

 

表4-2外部中断寄存器说明

P0IEN(0xAB)

P0[7:0]中断掩码寄存器。0:关中断 1:开中断

PICTL(0x8C)

P0口的中断触发控制寄存器
Bit0为P0[7:0]的中断触发配置:
0:上升沿触发 1:下降沿触发

P0IFG(0x89)

P0[7:0]中断标志位,在中断发生时,相应位置1

IEN1(0xB8)

Bit5为P0[7:0]中断使能位:0:关中断 1:开中断

具体程序如下:

#include <ioCC2530.h>

#define LED1 P1_0

/****************************

//初始化按键为中断输入方式

*****************************/

void InitKeyINT(void)

{

    P0IEN |= 0X10;  //P04设置为中断方式

    PICTL |= 0X01;  //下降沿触发

    EA = 1;         //总中断使能

    IEN1 |= 0X20;   //P0中断使能;

    P0IFG |= 0x00;  //初始化中断标志位

}

/***************************

//主函数

***************************/

void main(void)

{

    P1DIR |= 0x01; //P10定义为输出

    LED1 = 1;

    InitKeyINT();

    while (1) ;

}



/****************************

//中断处理函数

*****************************/

#pragma vector = P0INT_VECTOR

__interrupt void P0_ISR(void)

{

    if (P0IFG > 0)    //按键中断

    {

        LED1 = !LED1;

        P0IFG = 0;    //清中断标志

    }

}

4.4.3 实验效果

按下开发板按键S3(KEY1)控制D3(LED1)的亮和灭。

 

扫码关注公众号,输入zigbee。即可获得源码 + 全套开发视频

 

发布了146 篇原创文章 · 获赞 54 · 访问量 21万+

没有更多推荐了,返回首页

分享到微信朋友圈

×

扫一扫,手机浏览