5.2 SW1控制LED1亮灭(中断功能)

发布者:平和宽容最新更新时间:2024-08-01 来源: cnblogs关键字:中断功能 手机看文章 扫描二维码
随时随地手机看文章

中断:CPU收到中断请求后暂停正在执行的程序,而去执行中断服务函数中的程序,处理结束后,继续执行原来的程序。


能够产生中断请求的中断源如下:

CC2530中断设置步骤:使能端口组中断(IEN)——端口组中具体端口中断使能/禁止(PxIEN)——设置中断触发方式PICTL——使能系统总中断(EA)

下文按此思路展开:

1、使能端口组中断

IEN2|=0x10;    //10000,设置IEN2的第4位,使能P1端口组中断

2、使能具体端口中断

P1IEN|=0x04;    //0100,P1_2口中断

3、设置中断触发方式

PICTL|=0x02;   //P_3到P1_1下降沿触发中断,SW1按下,电平由高变低

4、使能总中断

EA=1;    

要想使用中断功能,必须使能中断总开关EA,并且使能各个中断源的自身控制开关IEN。

具体寄存器详情如下:

中断服务函数格式:以P1为例。函数体不能带有参数,也不能有返回值

#pragma vector=P1INT_VECTOR

__interrupt void P1_INT(void) //注意,interrupt前是两个_

{

  /*处理程序*/

}


中断向量名如下:可查看ioCC2530.h头文件内容

中断标志位:中断源很多,需要识别触发中断的中断源。

P0、P1、P2端口组的中断标志位分别是P0IF、P1IF、P2IF。

P1_2连接着SW1按键,按键按下P1IF值变为1,CPU就去执行P1的中断服务函数。标志位不能自动复位,需要手动清除该中断标志位。

  P1IF=0;  //清除P1端口组中断标志位

具体是P1中哪一个针脚引起的中断,可以通过PxIFG寄存器的值来判断。当然也需要手动清除具体的针脚标志位(在中断服务函数中)。

  P1IFG&0x04     //判断P1_2的中断标志位是否为1

  P1IFG &=~ 0x04;   //清除P1_2的中断标志位

清除过程,先小再大。即先关局部再关总闸。


#include 'ioCC2530.h'


#define  LED1   P1_0


/*==================端口初始化函数=====================*/

void Init_Port()

{

  //将P1_0设置为通用I/O端口功能

  P1SEL &= ~0x01;   

  //将P1_0的端口传输方式设置为输出

  P1DIR |= 0x01;   

  LED1 = 0;

}

/*===============外部中断初始化函数==================*/

void Init_INTP()

{

  IEN2 |= 0x10;         //端口1中断使能

  P1IEN |= 0x04;        //端口P1_2外部中断使能

  PICTL |= 0x02;        //端口P1_0到P1_3下降沿触发 

  EA = 1;               //使能总中断

}

/*================外部中断1服务函数====================*/

#pragma vector = P1INT_VECTOR     //外部中断1的向量入口

__interrupt void Int1_Sevice()

{

  LED1 = ~LED1;

/*先清除引脚标志位,再清除端口组标志位,否则会一直进入中断*/

  P1IFG &= ~ 0x04;        //清除P1_2引脚的标志位

  P1IF = 0;               //清除P1端口组的标志位

}

/*====================主函数==========================*/

void main()

{

  Init_Port();          //初始化通用I/O端口

  Init_INTP();          //初始化外部中断

}


关键字:中断功能 引用地址:5.2 SW1控制LED1亮灭(中断功能)

上一篇:1、CC2530单片机介绍
下一篇:3、寄存器

推荐阅读最新更新时间:2026-03-25 14:01

【STM32学习笔记】深入解析EXTI外部中断功能
EXTI外部中断 表的详细内容在STM32F10xxx参考手册132页有, 然后右边这里还有个中断的地址,这个地址是干什么的呢?这个是因为我们程序中的中断函数,它的地址是由编译器来分配的,是不固定的。但是我们的中断跳转由于硬件的限制,只能跳到固定的地址执行程序,所以为了能让硬件跳转到一个不固定的中断函数里,这里就需要在内存中定义一个地址的列表。这个列表地址是固定的,中断发生后,就跳到这个固定位置,然后在这个固定位置由编译器,再加上一条跳转到中断函数的代码,这样中断跳转就可以跳转到任意位置。这个中断地址的列表,就叫中断向量表。 NVIC基本结构 这个NVIC的名字叫做嵌套中断向量控制器,在STM32中,它是用来统一分配
[单片机]
【STM32学习笔记】深入解析EXTI外部<font color='red'>中断</font><font color='red'>功能</font>
STM32中DMA传输中断功能的关闭方法详解
一、为什么我们要关中断功能呢? 1.在撰写类似DMA相关串口传输程序时,我们会使用到队列指针的操作,而这个操作绝对不可以被任何行为打断,打断就寄。 2. 因此我们要在进行队列指针的数据处理时,将全局的中断全部关闭。(很快,就一瞬间开关一下) 3.举个例子: 例如在某一串口传输函数中,以下操作需原子性: ENTER_CRITICAL(); if (队列未满) { txHead = next_head; // 更新队列头 if (UART空闲) { 启动DMA发送(); // 更新txTail和isUART3Busy } } EXIT_CRITICAL(); 若此处不关闭中断,DMA完成回
[单片机]
STM32中DMA传输<font color='red'>中断</font><font color='red'>功能</font>的关闭方法详解
PLC中断功能详解
plc这样理解中断功能,在理解中断时,首先要清楚plc的运算周期或者说是扫描周期,有必要说下plc顺控循环执行的流程,这是理解中断的前提,必须要掌握,分为三部分,输入处理、程序处理、输出处理。 1、输入处理,可编程控制器在执行程序前,将可编程控制器的所有输入端子的ON/OFF状态读入输入映像区,程序执行过程中即使输入发生变化,输入映像区的内容也不会变化,在执行下一个循环的输入处理时读取该变化。 2、程序处理、plc根据程序内存中的指令内容,从输入映像区和其他软元件的映像区中读出各软元件的ON/OFF状态,然后从0步依次开始运算,并将每次得出的结果写入到映像区中。因此,各软元件的映像区随着程序的执行逐步改变其内容,此外,输出
[嵌入式]
PLC<font color='red'>中断</font><font color='red'>功能</font>详解
如何理解PLC中断,PLC中断功能怎么用?
PLC程序中经常用到中断功能,中断相当于子程序,子程序相当于主程序,说起来 PLC里的中断平时根本没什么用。这么说,像告诉脉冲处理,不用中断,只用1MS的计时能实现其功能,但是却没有中断计时来的精确,毕竟不用中断,程序扫瞄受扫描周期束缚。 但有些程序,必须要用到中断,典型的就是PID,检测读取周期必须精确。不管是以前自己编PID中断程序,还是现在集成的PID中断程序块,都使用到了精确的时间控制,立即处理信息的中断。 今天这篇文章,我们就来谈谈,PLC中断功能怎么用? PLC这样理解中断功能,在理解中断时,首先要清楚PLC的运算周期或者说是扫描周期,有必要说下PLC顺控循环执行的流程,这是理解中断的前提,必须要掌握,分为三部
[嵌入式]
如何理解PLC<font color='red'>中断</font>,PLC<font color='red'>中断</font><font color='red'>功能</font>怎么用?
基于ARM7内核的SWI软中断功能设计方案详解
笔者在设计一项目时采用LPC2458。此CPU为ARM7内核,带512K字节的片内FLASH,98k字节的片内RAM,支持片外LOCAL BUS总线,可从片外NOR FLASH启动CPU.由于代码量较大,程序放在片外的NOR FLASH中。且存在片外NOR FLASH在运行程序时,需对片外的NOR FLASH擦写的需求。 图1存储部分原理框图 在设计中,片外NOR FLASH的大小为16M字节。其中2M规划为存放运行程序,剩余的空间用于产品运行日志,告警灯存储空间。因此存在着在程序运行时对片外NOR FLASH擦写的需求。如果程序正在正常运行的片外FLASH中去擦写FLASH,会存在总线冲突的问题,无法实现此功能。我们采用A
[单片机]
基于ARM7内核的SWI软<font color='red'>中断</font><font color='red'>功能</font>设计方案详解
单片机编程技巧--功能强大的时钟中断
在单片机程序设计中,设置一个好的时钟中断,将能使一个CPU发挥两个CPU的功效,大大方便和简化程序的编制,提高系统的效率与可操作性。我们可以把一些例行的及需要定时执行的程序放在时钟中断中,还可以利用时钟中断协助主程序完成定时、延时等操作。 下面以6MHz时钟的AT89C51系统为例,说明时钟中断的应用。 定时器初值与中断周期 时钟中断无需过于频繁,一般取20mS(50Hz)即可。如需要百分之一秒的时基信号,可取10mS(100Hz)。这里取20mS,用定时器T0工作于16位定时器方式(方式1)。T0的工作方式为:每过一个机器周期自动加1,当计满0FFFFh,要溢出时,便会产生中断,并由硬件设置相应的标志位供软件查询。即中断
[单片机]
中断及定时器实现时钟功能
中断及定时器实现24时 时钟,程序如下: #include reg52.h #define PORTLEN P0 sbit bit_select = P2^0; sbit seg_select = P2^1; unsigned char src = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; unsigned char qrc = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char second1 ; unsigned char shi
[单片机]
单片机中断功能在干簧管计数器设计中的应用
在本文的介绍中,要设计一个 干簧管 计数器,并用 数码管 来显示。本案例例中,还要接触 单片机 一个重要的功能“中断”。 干簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,具有结构简单,体积小便于控制等优点,其外壳一般是一根密封的玻璃营,管中装有两个铁质的弹性簧片电板,还灌有一种叫金属铑的惰性气体。平时,玻璃管中的两个由特殊材料制成的簧片是分开的。 iframe id="iframeu2163852_0" src="http://pos.baidu.com/qclm?conwid=250&conhei=250&rdid=2163852&dc=3&di=u2163852&dri=0&dis=0&dai=4&p
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved