为完成本章相关实验,读者应具备以下相关知识。
1.中断的概念
CPU在正常运行的时候,外部或者内部发生了请求CPU迅速去处理的事件,CPU暂时中断当前的程序,去处理所发生的事件,处理完事件后,再返回到原来被中断的程序继续运行,此过程称为中断。中断流程如图2.4.1。
图2.4.1 中断流程
2.中断源
AT89C52单片机共有6路中断源和两个中断优先级。中断优先级采用了自然优先级和人工设置高、低优先级的策略。中断处于同一级别时,就由自然优先级确定。不做特别设置时,每个中断都处于低优先级。中断优先级可以通过程序来设定,由中断优先级寄存器IP来统一管理,如表2.4.1所示。
表2.4.1 中断源优先级顺序
3.中断系统结构
AT89C52单片机中断系统结构如图2.4.2所示,这张结构图简单明了地解释了中断源、中断标志、中断允许、中断优先级等重要模块以及中断申请和响应过程。
图2.4.2 AT89C52单片机中断系统结构
4.与中断相关的寄存器
与中断相关的寄存器包括定时器控制寄存器TCON、中断允许寄存器IE、中断优先级寄存器IP,其内部结构分别如表2.4.2、表2.4.3、表2.4.4所示。
表2.4.2 定时器控制寄存器TCON
注意:TCON寄存器是一个可以按位寻址的特殊功能寄存器。低四位负责外部中断的管理。其中IT1、IT0负责外部中断的触发方式控制。对外部中断,有两种触发方式,分别为低电平触发和下降沿触发,如设置IT1=0,为低电平触发,IT1=1,为下降沿触发。
表2.4.3 中断允许寄存器IE(www.xing528.com)
注意:IE寄存器是一个可以按位寻址的特殊功能寄存器。
表2.4.4 中断优先级寄存器IP
注意:IP寄存器是一个可以按位寻址的特殊功能寄存器。
5.中断服务函数的格式
中断服务函数的格式为:
注意:中断服务函数不能返回任何值,所以前面是void后面是函数名,名字可以自己取,但不能与c语言的关键字相同;中断服务函数不带任何参数,所以函数名后面的()内是空的,中断入口号是指单片机的几个中断源的序号(见表2.4.1)。这个序号是单片机识别不同中断的唯一标志,如中断入口号为2,表示外部中断1的中断服务函数。后面的using工作组是指这个中断源使用单片机内存中4个工作寄存器的哪一组,C51编译后会自动分配工作组,因此最后这句话我们通常省略不写。
C51中断服务程序具体写法如下:
这是定时器T1的中断服务程序,定时器T1的中断服务程序入口号是3,因此要写成interrupt 3,服务程序的内容是给定时器TI的高8位TH1、低8位TL1重装初值。
写中断服务程序前,首先要对中断源如定时器T0、T1进行初始化。初始化步骤为:
(2)根据实际定时时间(计数次数),计算定时器初值,装入TH0、TL0或者TH1、TL1中;
(3)设置定时器/计数器T0、T1的启停方式控制位TR0和TR1,开始定时/计数;
(4)设置IE寄存器,开放相应中断。
注意:以上4个初始化步骤顺序可以适当调整。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。