拉伸膜厂家
免费服务热线

Free service

hotline

010-00000000
拉伸膜厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

关于中断部分的小结

发布时间:2020-07-21 19:14:19 阅读: 来源:拉伸膜厂家

主要是针对外部中断部分,总结外部中断对特殊功能寄存器的设置以及程序的编写流程。此外这里重点介绍一些中断扩展的方法。外部中断信号是由P3口的P3.2和P3.3两个管脚输入的。外部中断程序编写流程:一、外部中断初始化:在使用外部中断前,先要设置相关特殊功能寄存器,即初始化过程;1.开CPU总中断:EA=1;2.开外部中断:开外部中断0:EX0=1; 开外部中断1:EX1=1;3.设置外部中断触发方式: 外部中断0触发控制位IT0;当IT0=0时,为电平触发方式当IT0=1时,为边沿触发方式(下降沿有效)外部中断1触发控制位IT1(同上);4.外部中断优先级设置(可以不设置) PX0=1;PX1=1; 举例如下:void interrupt_init(void) // 中断初始化{ EA = 1; //开总中断 EX0 = 1; //开外部中断0 EX1 = 1; //开外部中断0 IT0 = 1; //外部中断0下降沿触发方式 IT1 = 0; //外部中断1电平的触发方式}二、主程序主程序部分为你需要实现的功能,这部分和中断几乎没什么太大关联,只不过,在执行主程序时,如果从外部来一个外部中断信号,不得不放弃现在执行的任务而转而执行中断子程序;三、中断子程序 这部分主要便是对请求中断成功后进入中断后,你需要执行什么任务;外部中断子程序写法如下:void INT_0() interrupt 0 using 0 //外部中断0子程序{ LED0 = ~LED0; //这句话代换成你所需要功能的C代码}void INT_1() interrupt 2 using 2 //外部中断1子程序{ LED1 = 0; //这句话代换成你所需要功能的C代码} 完整外部中断例程代码如下: #includereg52.h>#define uchar unsigned charsbit wr=P3^6;sbit LED0 = P1^0;sbit LED1 = P1^1;void interrupt_init(void) // 中断初始化{ EA = 1; //开总中断 EX0 = 1; //开外部中断0 EX1 = 1; //开外部中断0 IT0 = 1; //外部中断0下降沿触发方式 IT1 = 0; //外部中断1电平的触发方式} void main(void){ wr=0; //低电平时第三列为独立按键 interrupt_init(); while(1) { LED1 = 1; }} void INT_0() interrupt 0 using 0 //外部中断0子程序{ LED0 = ~LED0;}void INT_1() interrupt 2 using 2 //外部中断1子程序{ LED1 = 0;}实现功能:初始灯1和2全灭;当按下P3.2对应键盘1(矩阵键盘第三行第三列),向下降沿触发外部中断0子程序,按一次键1松手灯1亮,再按一次键1松手灯1灭;当按下P3.3对应键盘2(矩阵键盘第四行第三列),送入低电平信号触发外部中断1子程序,按下键2灯2亮,松手灯2灭。中断的扩展:一、定时器扩展为外部中断源在51单片机内部有两个定时器/计数器T0和T1,在满足中断响应的情况下,当T0或T1的计数值从全1(0xFFFF)状态进入全0(0x0000)时,此时就会产生定时器溢出中断。根据以上分析,我们只需要把计数器的初值设置为0xFFFF,那么只要计数输入端再来一个脉冲就可以产生溢出中断申请。设想我们把外部中断输入连接到计数器输入端,就可以利用外部中断申请的负脉冲产生定时器溢出中断申请,而转移到相应中断服务程序入口地址。只要在(0x000B或0x001B)处存放外部中断服务子程序,就可以达到目的。具体步骤如下:1.将定时/计数器T0或T1的计数输入端(P3.3或P3.4)作为扩展外部中断请求输入端。2.置定时/计数器T0或T1为工作模式2,计数方式—8位自动装载方式。3.定时/计数器T0或T1的高8位和低8位都预置为全1。4.在相应的中断服务程序入口(0x000B或0x001B)处存放外部中断服务子程序。二、软件查询扩展外部中断源当需要的外部中断源较多,采用第一种方法仍不能满足实际需求,我们可以采用这种方法。设有四个外部中断源,INT00、INT01、 INT02 、INT03,这四个外部中断请求源的输入端通过一个4路的或非门连接到51单片机的/INT0引脚输入端。只要4个外部中断请求源中有一个或者一个以上的有效(高电平),就会产生一个负的/INT0信号向51单片机发出中断申请。为了确认在/INT0有效时究竟是INT00、INT01、 INT02 、INT03中哪个发出的中断申请,可以通过软件查询的方法来确认。将四个中断源输入端INT00、INT01、 INT02 、INT03分别接到P1.0~P1.3这四个引脚上。一旦响应中断,在中断服务程序中CPU通过软件查询方法对P1.0~P1.3这四条线的电位进行检测,以确认提出中断申请的中断源。当扩展的4个外部中断源优先级不同时,软件查询的顺序也应按照优先级的的由高到低顺序进行。设扩展的4个外部中断源的优先级由高到低的顺序是INT00到INT03,则软件查询顺序为P1.0到P1.3。 51单片机相关文章:51单片机教程

合肥隆胸

成都隆鼻医院

杭州磨骨

石家庄隆鼻