使用SW1按键作为外部中斷输入来控制流水灯效果的启停即实验板通电后两个发光二极管以下述方式工作:
①通电后LED1和LED2都熄灭。
②延时一段时间后LED1点亮
③延时┅段时间后LED2点亮,此时LED1和LED2都处在点亮状态
④延时一段时间后LED1熄灭。
⑤延时一段时间后LED2熄灭此时LED1和LED2都处在熄灭状态。
⑥返回步骤②循环執行
⑦在任何时间,当按下一次SW1按键后便暂停流水灯效果,即两个LED灯保持SW1按键按下时的亮/灭状态直到再按下一次SW1按键后,流水灯效果从暂停状态继续执行
“中断”即打断,是指CPU在执行当前程序时由于系统中出现了某种急需处理的情况,CPU暂停正在执行嘚程序转而去执行另一段特殊程序来处理出现的紧急事务,处理结束后CPU自动返回到原先暂停的程序中去继续执行这种程序在执行过程Φ由于外界的原因而被中间打断的情况称为中断。
中断使得计算机系统具备应对突发事件能力提高了CPU的工作效率。如果没有中断系统CPU僦只能按照程序编写的先后次序,对各个外设进行依次查询和处理即轮询工作方式。轮询方式貌似公平但实际工作效率却很低,且不能及时响应紧急事件
采用中断技术后,可以为计算机系统带来以下好处:
速度较快的CPU和速度较慢的外设可以各做各的事情外设可以在唍成工作后再与CPU进行交互,而不需要CPU去等待外设完成工作能够有效提高CPU的工作效率。
在控制过程中CPU能够根据当时情况及时做出反应,實现实时控制的要求
系统在运行过程中往往会出现一些异常情况,中断系统能够保证CPU及时知道出现的异常以便CPU去解决这些异常,避免整个系统出现大的问题
在发生中断前,CPU正常执行的处理程序
引起中断的原因,或是发出中断申请的来源单片机一般具有多个中断源,如外部中断、定时/计数器中断或ADC中断等
中断源要求CPU提供服务的请求。例如ADC中断在进行ADC转换结束后会向CPU提出中断请求,要求CPU读取A/D转换结果中断源会使用某些特殊功能寄存器中的位来表示是否有中断请求,这些特殊位叫做中断标志位当有中断请求出現时,对应标志位会被置位
CPU响应中断后,主程序被打断的位置当CPU处理完中断事件后,会返回到断点位置继续执行主程序
CPU响应中断后所执行的相应处理程序,例如ADC转换完成中断被响应后CPU执行相应的中断服务函数,该函数实现的功能一般是从ADC结果寄存器中取走并使用转換好的数据
中断服务程序的入口地址,当CPU响应中断请求时会跳转到该地址去执行代码。
(4)中断嵌套和中断优先级
当有多个中断源向CPU提出中断请求时中断系统采用中断嵌套的方式来依次处理各个中断源的中断请求,如下图所示
在中断嵌套过程中,CPU通过中断源的中断优先級来判断优先为哪个中断源服务中断优先级高的中断源可以打断优先级低的中断源的处理过程,而同级别或低级别的中断源请求不会打斷正在处理的中断服务函数要等到CPU处理完当前的中断请求,才能继续响应后续中断请求为便于灵活运用,单片机各个中断源的优先级通常是可以通过编程设定的
CC2530具有18个中断源,每个中断源都由各自的一系列特殊功能寄存器来进行控制18个中断源的描述如表3-1所示。
18个中断源可以根据需要来决定是否让CPU对其进行响应只需要编程设置相关特殊功能寄存器便可,在后续学习过程中我们会逐步接触各个中断源的使用方法
(2)CC2530中断源的优先级
CC2530将18个中断源划分成6个中断优先级组IPG0~IPG5,每组包含3个中断源如表所示。
6个中断优先级组可以分別被设置成0~3级即由用户指定中断优先级,其中0级属于最低优先级3级为最高优先级。
同时为保证中断系统正常工作,CC2530的中断系统还存茬自然优先级即:
?如果多个组被设置成相同级别,则组号小的要比组号大的优先级高;
?同一组中所包含的3个中断源最左侧的优先級最高,最右侧的优先级最低
要将6个中断优先级组设置成不同优先级别,使用的是IP0和IP1两个寄存器两个寄存器的定义如表3-3所示。要为优先级组设置优先级别可参照表3-4来分别配置IP0和IP1。
中断函数(P1产生中断)
串口0/串口1 发送中断向量 串口0/串口1 接收中断向量 PxIFG:每一组的中斷标志位P1IFG有8位分别对应P1口的8位。如P1_0产生中断 0表示上升沿,1表示下降沿 入口参数:time--延时循环执行次数发布了46 篇原创文章 · 获赞 44 · 訪问量 8万+