中断(Interrupt)是指在计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
定时器/计数器(TImer/Counter)在实时控制系统中,实现对于外界事件的定时延时及计数功能。
串行通信(Serial Communicate)是计算机与外界交换信息的一种基本通信方式。
中断系统中断过程中,请求产生中断的事件称为中断源,中断源向CPU提出的请求为中断请求(Interrupt Requst,IRQ),CPU通过上下文切换保存好当前的工作状态后,转而去处理中断请求,也就是产生中断响应。直到处理完中断请求事件,才返回原来的工作状态,继续工作。整个过程如下图所示:
51单片机中断系统的结构图如下:
中断源51单片机中有5个中断源,如下表所示:
中断号 优先级 中断源 中断入口地址0 1(最高级) 外部中断0 0003H
1 2 定时器0 000BH
2 3 外部中断1 0013H
3 4 定时器1 001BH
4 5(最低级) 串口中断 0023H
每个中断源都分配了对应的中断号及中断服务入口地址,在这个中断入口地址里,存放着跳转到相应中断服务程序的跳转指令。当多个中断源同时向CPU提出中断请求时,CPU将根据中断源的优先级来依次响应中断。
相关寄存器SFR中与中断有关的寄存器有:
IEIE(Interrupt Enable),中断允许寄存器,可位寻址,其各位定义如下:
位地址 AFH AEH ADH ACH ABH AAH A9H A8H定义 EA - (ET2) ES ET1 EX1 ET0 EX0
* EA(Enable All):CPU中断总控制位,EA=1,CPU对所有中断开放,EA=0,CPU禁止一切中断响应。
* ES(Enable Serial):串口中断允许控制位,ES=1,允许串行口接受、发送中断。
* ET0/ET1(Enable TImer):定时/计数器0/1中断允许控制位,ET0/ET1=1,允许T0/T1中断。52系列单片机里还有ET2。
* EX0/EX1(Enable Exterior):外部中断INT0/INT1中断允许控制位,EX0/EX1=1,允许外部中断INT0/INT1中断。
IP(Interrupt Priority),中断优先级寄存器,可位寻址,其各位定义如下。未设置时或复位后,IP各位均为”“则按照系统默认的优先级
位地址 BFH BEH BDH BCH BBH BAH B9H B8H定义 - - (PT2) PS PT1 PX1 PT0 PX0
* PS(Priority Serial):串行口优先级设定位,PS=1,串行口为高优先级。
* PT0/PT1(Priority TImer):定时/计数器0/1优先级设定位,PT0/PT1=1,定时/计数器0/1为高优先级。
* PX0/PX1(Priority Exterior):外部中断INT0/INT1优先级设定位,PX0/PX1=1,外部中断INT0/INT1为高优先级。
TCON(TImer Control),定时/计数器控制寄存器,可位寻址,其各位定义如下:
位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H定义 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
* TF0/TF1(Timer Flag):定时/计数器0/1溢出标志位,当定时/计数器计满溢出时,由硬件自动置“1”,并申请中断;在进入中断服务程序后,又由硬件自动置“0”。
* TR0/TR1(Timer Run):定时/计数器0/1启停控制位,TR0/TR1=1,启动定时/计数器。
* IE0/IE1(Interrupt Exterior):外部中断INT0/INT1中断请求标志位,外部中断源有请求时,对应的标志位IE0/IE1由硬件置“1”,当CPU响应该中断后,又由硬件自动置“0”。
* IT0/IT1(Interrupt Touch):外部中断INT0/INT1的触发方式选择位,IT0/IT1=0,对应外部中断设置为低电平触发方式,IT0/IT1=1,对应外部中断设置为边沿触发方式。
51单片机在CPU的每个机器周期的S5 P2期间,将自动查询TCON中各个中断申请标志,若查询到某个中断标志位被置位,将启动中断机制。
中断源发出中断请求后。要使CPU能够响应中断,IE中的中断总允许位EA及对应的中断允许位(ES/ET/EX)都需要置为“1”。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)