CC2530学习(二)外部中断
文章目录
- 一、硬件连接
- 二、寄存器描述
- (一)、引脚中断使能
- (二)、中断触发方式配置
- (三)、端口中断使能
- (四)、初始化中断标志位
- (五)、开启总中断
- (六)、中断服务函数
- 三、示例代码
- 四、实验现象
一、硬件连接
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学习(二)外部中断相关推荐
- CC2530/Zigbee协议栈外部中断配置详解
CC2530/Zigbee协议栈配置外部中断 一.I/O端口 二.配置寄存器 三.中断处理函数 一.I/O端口 1.在CC2530芯片中,其I/O口用作通用 I/O 时,引脚可以组成 3 个 8 位端 ...
- OK6410开发板学习之外部中断(按键点亮led和蜂鸣器)
中断在嵌入式里面是很常见的一个功能了.通过这个功能,可以让CPU减轻很多负担,不用不断的查询设备的状态.提高了CPU的效率. 中断的大体过程如下: 中断源检测中断信号产生,然后将中断信号发送给中断控制 ...
- STM32学习:外部中断
文章目录 一.STM32外部中断 1.基本知识 2.中断设计流程 二.硬件配置 1.proteus仿真电路搭建 2.CubeMX硬件配置 3.配置中断 1.寻找中断虚函数 2.中断回调函数编写 3.p ...
- STM8学习笔记---外部中断实现
利用按键做为中断触发,按键按下一次,LED灯翻转一次. 首先初始化IO口,按键接在PC4口,默认情况下高电平,按键按下后为低电平. 初始化代码如下: void EXTI_GPIO_Init( void ...
- 【嵌入式学习-STM32F103-EXTI外部中断】
目录 1.EXTI基础知识补充 2.编程要点 3.对射式红外传感器计次完整代码(注释) 4.旋转编码器计次完整代码(注释) 参考江科大32单片机教学视频! 1.EXTI基础知识补充 对于旋转编码器,正 ...
- RT1064学习笔记-外部中断
所有的中断号可以在MIMXRT1064.h中74行开始查看 外部中断 1.初始化IO口作为输入 设置要作为外部中断输入的 IO 口的状态,可以设置为上拉/下拉输入, 也可以设置为浮空输入(PKE=0) ...
- STM32学习——EXTI外部中断
EXTI简介 EXTI可以实现对外部输入信号的上升沿检测和下降沿的检测.EXTI可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性. 可以看到EXTI一共有20条信 ...
- 单片机实验说明<二>外部中断基本使用
实验二 外部中断应用 设计要求: 自行设计实验线路并编制程序:要求在无外部中断时最右一位发光二极管点亮.请编程实现:当外部中断0请求中断时发光二极管左移:当外部中断1请求中断时发光二极管闪烁. 电路设 ...
- STM32单片机(12) 红外信号接收解码(外部中断)
[转载请注明出处:http://blog.csdn.net/leytton/article/details/38687537] 本程序主要利用外部中断,实现红外遥控器信号接收解码,并利用串口通信把编码 ...
最新文章
- 用Transformer实现OCR字符识别!
- android11通知栏按钮,android开发(11) 消息栏通知(Notification)
- 信息系统项目管理师-第二三章:信息系统项目管理基础与立项管理2
- EasyUI中Calendar日历的简单使用
- BZOJ-3289-Mato的文件管理-莫队+树状数组
- ubuntu重置面板
- python学习笔记 - lambda 与 函数嵌套
- Tipard Video Converter Ultimate如何旋转视频?
- dubbo分布式事务解决方案_阿里架构师谈:高并发+分布式+秒杀+微服务+性能优化...
- Web media radar|web媒体雷达
- Router-view
- 坚果云 不在计算机显示图标,在Ubuntu18.04系统顶栏不显示坚果云图标的解决办法...
- vue 整合百度地图
- ACM题目和培养训练!!!
- 设计模式 ---建造者模式
- 苹果android wear教程,Android Wear/Apple Watch/WatchKit智能手表开发入门教程
- linux centos 访问根目录 not accessable
- html图片轮播种类,支持4种类型的jQuery轮播图插件EasySlides
- 已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行,如何解决
- python 协程库gevent学习--源码学习(一)