文章目录

  • 一、硬件连接
  • 二、寄存器描述
    • (一)、引脚中断使能
    • (二)、中断触发方式配置
    • (三)、端口中断使能
    • (四)、初始化中断标志位
    • (五)、开启总中断
    • (六)、中断服务函数
  • 三、示例代码
    • 四、实验现象

一、硬件连接

LED灯阴极接地,通过三极管控制阳极导通状态。按钮电平检测引脚接上拉电阻,当按键按下时点平被拉低。

二、寄存器描述

(一)、引脚中断使能

当P0IEN对应bit被置位时开启该引脚中断。

(二)、中断触发方式配置

通过PICTL寄存器的P0ICON位设置外部中断是上升沿触发还是下降沿触发。

(三)、端口中断使能

通过置位IEN1第5位P0IE来开启端口0外部中断使能。

(四)、初始化中断标志位

在开启总中断之前,为了避免开始的时候错误地进入中断,需要清零存放标志位的寄存器P0IFG

(五)、开启总中断

通过置位IEN0的第7位EA来开启中中断,当然也可以直接使用赋值操作EA=1。

(六)、中断服务函数

中断函数的写法是通过 #pragma vector = 中断向量,紧接着是中断处理程序来进行。具体如下。

#pragma vector = XX_VECTOR//XX中的名字需要根据中断向量表修改
__interrupt void xx_ISR(void)//这个名字可以随便改
{//处理完记得清零中断标志位
}

下面两图为该例子中需要清空的寄存器P0IFG对应引脚的位和P0IF。注意上下两个P0IF是不同的,一个表示的是寄存器,而另一个表示的是IRCON的一

三、示例代码

#include <ioCC2530.h>#define LED1 P0_1        //灯的阳极
#define KEY1 P0_2       //按键检测引脚void delay(void)
{int j;for(j=6000;j>0;j--);
}void Button_Init(void)
{//采用中断的方式检测按键按下,按键引脚为P0.2,默认上拉输入P0IEN |= 0X04;//使能P0.2中断PICTL |= 0X01;//设置全部端口中断方式为下降沿触发 PICTL第0bit,设为0则为上升沿触发,设为1则下降沿触发IEN1 |= 0X20;//允许P0口中断,对应为IEN1中的第5bit,设为0则关中断 设为1则开中断P0IFG = 0X00;//初始化中断标志位,当产生中断时,相应P0.2引脚位置即bit2会被置1EA = 1;//开总中断 或者 IEN0 |= 0X80
}void LED_Init(void)
{P0DIR |= 0X01;//配置为输出模式LED1 = 0X00;//熄灭灯
}void main(void)
{Button_Init();LED_Init();while(1){//do something}
}//中断函数
#pragma vector = P0INT_VECTOR// 格式: #pragma vector = 中断向量,紧接着是中断处理程序__interrupt void P0_ISR(void)
{delay();//延时消抖if(KEY1==0){LED1 = ~LED1;       //灯的状态取反P0IFG &= ~0X04;      //清除P0.2中断标志位P0IF = 0;           //清除P0端口中断标志位}while(KEY1);//等待按键松开
}

四、实验现象

按钮每按下一次,灯的状态取反一次。

CC2530学习(二)外部中断相关推荐

  1. CC2530/Zigbee协议栈外部中断配置详解

    CC2530/Zigbee协议栈配置外部中断 一.I/O端口 二.配置寄存器 三.中断处理函数 一.I/O端口 1.在CC2530芯片中,其I/O口用作通用 I/O 时,引脚可以组成 3 个 8 位端 ...

  2. OK6410开发板学习之外部中断(按键点亮led和蜂鸣器)

    中断在嵌入式里面是很常见的一个功能了.通过这个功能,可以让CPU减轻很多负担,不用不断的查询设备的状态.提高了CPU的效率. 中断的大体过程如下: 中断源检测中断信号产生,然后将中断信号发送给中断控制 ...

  3. STM32学习:外部中断

    文章目录 一.STM32外部中断 1.基本知识 2.中断设计流程 二.硬件配置 1.proteus仿真电路搭建 2.CubeMX硬件配置 3.配置中断 1.寻找中断虚函数 2.中断回调函数编写 3.p ...

  4. STM8学习笔记---外部中断实现

    利用按键做为中断触发,按键按下一次,LED灯翻转一次. 首先初始化IO口,按键接在PC4口,默认情况下高电平,按键按下后为低电平. 初始化代码如下: void EXTI_GPIO_Init( void ...

  5. 【嵌入式学习-STM32F103-EXTI外部中断】

    目录 1.EXTI基础知识补充 2.编程要点 3.对射式红外传感器计次完整代码(注释) 4.旋转编码器计次完整代码(注释) 参考江科大32单片机教学视频! 1.EXTI基础知识补充 对于旋转编码器,正 ...

  6. RT1064学习笔记-外部中断

    所有的中断号可以在MIMXRT1064.h中74行开始查看 外部中断 1.初始化IO口作为输入 设置要作为外部中断输入的 IO 口的状态,可以设置为上拉/下拉输入, 也可以设置为浮空输入(PKE=0) ...

  7. STM32学习——EXTI外部中断

    EXTI简介 EXTI可以实现对外部输入信号的上升沿检测和下降沿的检测.EXTI可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性. 可以看到EXTI一共有20条信 ...

  8. 单片机实验说明<二>外部中断基本使用

    实验二 外部中断应用 设计要求: 自行设计实验线路并编制程序:要求在无外部中断时最右一位发光二极管点亮.请编程实现:当外部中断0请求中断时发光二极管左移:当外部中断1请求中断时发光二极管闪烁. 电路设 ...

  9. STM32单片机(12) 红外信号接收解码(外部中断)

    [转载请注明出处:http://blog.csdn.net/leytton/article/details/38687537] 本程序主要利用外部中断,实现红外遥控器信号接收解码,并利用串口通信把编码 ...

最新文章

  1. 用Transformer实现OCR字符识别!
  2. android11通知栏按钮,android开发(11) 消息栏通知(Notification)
  3. 信息系统项目管理师-第二三章:信息系统项目管理基础与立项管理2
  4. EasyUI中Calendar日历的简单使用
  5. BZOJ-3289-Mato的文件管理-莫队+树状数组
  6. ubuntu重置面板
  7. python学习笔记 - lambda 与 函数嵌套
  8. Tipard Video Converter Ultimate如何旋转视频?
  9. dubbo分布式事务解决方案_阿里架构师谈:高并发+分布式+秒杀+微服务+性能优化...
  10. Web media radar|web媒体雷达
  11. Router-view
  12. 坚果云 不在计算机显示图标,在Ubuntu18.04系统顶栏不显示坚果云图标的解决办法...
  13. vue 整合百度地图
  14. ACM题目和培养训练!!!
  15. 设计模式 ---建造者模式
  16. 苹果android wear教程,Android Wear/Apple Watch/WatchKit智能手表开发入门教程
  17. linux centos 访问根目录 not accessable
  18. html图片轮播种类,支持4种类型的jQuery轮播图插件EasySlides
  19. 已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行,如何解决
  20. python 协程库gevent学习--源码学习(一)

热门文章

  1. 手机相机专业模式介绍
  2. 《Javascript 语言精髓》读书心得
  3. 屡败屡战的谷歌机器人计划,都交了哪些学费?
  4. 中科大计算机博士毕业证注明专业吗,中科大一博士点立新规:发篇中文文章才能毕业...
  5. dynamo方程怎么写_Dynamo论文介绍
  6. ftp上传软件,五大容易上手的ftp上传软件
  7. 软件测试学习——判定表法
  8. STM32单片机的知识点总结
  9. python 弹窗不阻断线程_js或者jquery如何实现类似alert式的函数阻断?
  10. 数据库学习Day03