C51编程11-中断篇(中断原理1)

发布者:czc天天最新更新时间:2022-06-23 来源: eefocus关键字:C51  编程  中断 手机看文章 扫描二维码
随时随地手机看文章

在前面的IO篇中,使用到矩阵键盘与LED,主函数中对它们的功能函数,从而检测矩阵键盘是否被按下,LED是否需要被点亮。如下面的代码所示,在循环中,不断执行键盘扫描与显示。


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

*

* Function name :main

* Description        :扫描键盘与显示

* Parameter         :None

* Return          :None

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

void main() {

   

    sysinit();

    while(1) { 

      //扫描键盘将键值码保存到一维数组

      inputNum(); 

      

      //显示数组 

       showsmg(0,table2[0]);

      delay(5);  //添加延时函数,防止会有显示乱码,必须加

      if(table2[1]==1){

      showsmg(1,table2[1]);

        delay(5);  //添加延时函数,防止会有显示乱码,必须加

      }    

   }

 

从上面的代码中,循环中的inputNum()函数会被一直调用,CPU不断检测检矩阵键盘有没有被使用,从而进行按键处理。


实际应用中,可能矩阵键盘很久才会被用到,不断扫描的方式,会影响CPU的利用率;为此希望按键被按下时, 才会执行按键代码处理代码,否则执行其他的功能代码。这样子inputNum()函数,就不应该放在主函数执行了,而是需要放在inputNum()函数放在中断服务程序中执行。

     

中断是个什么概念?从上面的场景中可以看到


(1)CPU循环执行着主程序代码;


(2)矩阵键盘被按下(有中断源请求),打断主程序执行;


(3)中断响应,进入中断服务程序(执行按键处理程序);


(4)中断服务程序(按键处理程序)执行完后,中断返回;


(5)继续执行主函数代码。

中断的是否发生,是由外部因素决定(按键是否被按下,是人为因素)。程序中无法事先按安排好(不然键盘扫描函数可以放在主函数执行即可),因此中断服务程序的过程是由硬件自动完成的。


中断的特点:


1)分时操作:缓解慢速外设与快速CPU的矛盾(键盘使用与CPU利用率的矛盾)


2)实时操作:外界变量可以根据要向CPU提出处理请求


    

中断系统的功能:


1)实现中断响应与中断返回


根据中断请求优先级是否马上进行中断响应;


执行中断响应时,需要将当前运行的状态(程序指针PC、寄存器、标志位)压入堆栈保存,保护现场,然后进入中断服务程序;


中断服务程序执行完后,恢复原来的运行状态,恢复现场。

 

 2)中断优先权


一般系统有多个中断源(可以请求中断的事件),它们进行中断请求时,需要区分优先级进行响应。


 

3)中断嵌套


中断可以实现嵌套,当CPU正在响应某个中断,这个时候有更高优先级的中断请求,高优先级的中断可以打断低优先级的中断,先高优先级中断,然后返回执行低优先级中断。

关键字:C51  编程  中断 引用地址:C51编程11-中断篇(中断原理1)

上一篇:C51编程10-I/O口综合练习
下一篇:C51编程12-中断篇(中断原理2)

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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