单片机中断问题
时间:07-22 09:46 阅读:820次
*温馨提示:点击图片可以放大观看高清大图
简介:51单片机中断不就是中间发生什么事情,跳转到另外一处,执行完在返回么?为什么还要中断专门拿出来用啊,直接跳转指令不就行了么?
首先要搞清中断,就要先说一说单片机P3口的几个引脚;P30到P35是中断的输入引脚。包括串行口、定时器(计数器)、外部中断等等。这些中断的特点是当中断的条件满足时,会执行相应的中断程序。注意中断程序的执行和汇编语言的子程序有一个重要区别:(多数教科书都没提这一点)子程序必须有调用语句ACALL之类的调用它,它才能执行;而中断不是!它是满足中断条件后,自动执行的。比如:定时器计数满;外部中断引脚低电平触发;串行口接受到数据....,此时程序自动跳到中断入口:03H,0BH,....23H。进入中断入口后一般要跳转一下再转到相应的中断子程序里去(除非你的中断程序很短,不会进入别的中断)。拿C语言来说,就是在C51里,中断函数不需要主函数main()调用,自动执行(前提是触发中断的条件出现时)。
中断不就是中间发生什么事情,跳转到另外一处,执行完在返回么?
这里的“中间发生什么事情”,就是触发的中断,根据触发中断的类型,程序自动跳转到入口程序(比如,触发外部中断0,则跳到03H,串行口中断则是23H,这些入口地址一般安排跳转指令)
为什么还要中断专门拿出来用啊,直接跳转指令不就行了么?
单片机要用中断这种方式工作呀!比如单片机在处理数据时,外部设备传来一个信号,要求启动,这是一个外部中断信号,单片机收到后进入相应中断程序,启动设备,或者监测设备等等。没有中断,单片机的功能大大降低。 意思是不是就是说一个是已知的条件跳转,一个是未知的,所以才采用中断 有这个意思,但不准确。中断是外部信号引起的,或者时钟计时到、或者串行接收到数据,总之中断的产生不由程序里的代码决定。