6.1中断的基本概念 单片机在某一时刻只能处理一个任务,当多个任务同时要 求单片机处理时,这一要求应该怎么实现呢?通过中断可以实 现多个任务的资源共享 所谓的中断就是,当CPU正在处理某项事务的时候,如果 外界或者内部发生了紧急事件,要求CPU暂停正在处理工作而 去处理这个紧急事件,待处理完后,再回到原来中断的地方, 继续执行原来被中断的程序,这个过程称作中断 从中断的定义我们可以看到中断应具备中断源、中断响应 中断返回这样三个要素。中断源发出中断请求,单片机对中断 请求进行响应,当中断响应完成后应进行中断返回,返回被中 断的地方继续执行原来被中断的程序
6.1 中断的基本概念 单片机在某一时刻只能处理一个任务,当多个任务同时要 求单片机处理时,这一要求应该怎么实现呢?通过中断可以实 现多个任务的资源共享。 所谓的中断就是,当CPU正在处理某项事务的时候,如果 外界或者内部发生了紧急事件,要求CPU暂停正在处理工作而 去处理这个紧急事件,待处理完后,再回到原来中断的地方, 继续执行原来被中断的程序,这个过程称作中断。 从中断的定义我们可以看到中断应具备中断源、中断响应、 中断返回这样三个要素。中断源发出中断请求,单片机对中断 请求进行响应,当中断响应完成后应进行中断返回,返回被中 断的地方继续执行原来被中断的程序
6.2.1MCS51单片机的中断源 1.外部中断源 外部中断0(INT):来自P32引脚,采集到低电平或者下降 沿时,产生中断请求 外部中断1(INT):来自P3引脚,采集到低电平或者下降 沿时,产生中断请求。 2.内部中断源 定时器计数器0(T):定时功能时,计数脉冲来自片内; 计数功能时,计数脉冲来自片外P34引脚。发生溢出时,产生中 断请求 定时器计数器1(T1):定时功能时,计数脉冲来自片内 计数功能时,计数脉冲来自片外P35引脚。发生溢出时,产生中 断请求 串行口:为完成串行数据传送而设置。单片机完成接受或发 送一组数据时,产生中断请求
6.2.1 MCS-51单片机的中断源 1. 外部中断源 外部中断0( P3.2 P3.3 ):来自 引脚,采集到低电平或者下降 沿时,产生中断请求。 外部中断1( 0 INT ):来自 引脚,采集到低电平或者下降 沿时,产生中断请求。 1 INT 2. 内部中断源 定时器∕计数器0( T0 ):定 时功能时,计数 脉冲来自片内; 计数功能时,计数脉冲来自片外 P3.4 引脚。发生溢出时,产生中 定时器∕计数器1( T1 ):定时功能 时,计数 脉 冲来自片内; 计数功能时,计数脉冲来自片外 P3.5 引脚。发生溢出时,产生中 串行口:为完成串行数据传送而设置。单片机完成接受或发 送 一组数据时,产生中断请求。 断请求。 断请求
6.2.2中断控制的专用寄存器 1.定时器控制寄存器(TCON) 该寄存器用于保存外部中断请求以及定时器的计数溢出。进行 字节操作时,寄存器地址为88H。按位操作时,各位的地址为88H 8FH。寄存器的内容及位地址表示如下 位地址8FH8EH8DH8CH8BH|8AH|89H88H 位符号TF1TR1 TFoTR0正E1T1 IEoITo IT和IT1——外部中断请求触发方式控制位 Io(IT1)=1脉冲触发方式,下降沿有效 (IT1)=0电平触发方式,低电平有效
6.2.2 中断控制的专用寄存器 1. 定时器控制寄存器(TCON) 该寄存器用于保存外部中断请求以及定时器的计数溢出。进行 字节操作时,寄存器地址为88H。按位操作时,各位的地址为88H ~8FH。寄存器的内容及位地址表示如下: 位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 ⚫ IT0 和IT1——外部中断请求触发方式控制位 IT0 (IT1)=1 脉冲触发方式,下降沿有效 IT0 (IT1)=0 电平触发方式,低电平有效
IE和IE1外中断请求标志位 当CPU采样到ⅠNT(或INT)端出现有效中断请求时,IE0 (IE1)位由硬件置“1”。当中断响应完成转向中断服务程序 时,由硬件把IE0(或1)清零。 ●TR。和TR1定时器运行控制位 TR(TR1)=0定时器/计数器不工作 TR(TR1)=1定时器/计数器开始工作 TF0和TF1计数溢出标志位 当计数器产生计数溢出时,相应的溢出标志位由硬件置“1。 当转向中断服务时,再由硬件自动清“0°。计数溢出标志位 的使用有两种情况:采用中断方式时,作中断请求标志位 来使用;采用查询方式时,作查询状态位来使用
⚫ IE0和IE1——外中断请求标志位 当CPU采样到 0 INT (或 1 INT )端出现有效中断请求时,IE0 (IE1)位由硬件置“1”。当中断响应完成转向中断服务程序 时,由硬件把IE0(或IE1)清零。 ⚫ TR0 和TR1——定时器运行控制位 TR0 (TR1 )=0 定时器/计数器不工作 TR0 (TR1 )=1 定时器/计数器开始工作 ⚫ TF0和TF1——计数溢出标志位 当计数器产生计数溢出时,相应的溢出标志位由硬件置“1” 。 当转向中断服务时,再由硬件自动清“0”。计数溢出标志位 的使用有两种情况:采用中断方式时,作中断请求标志位 来使用;采用查询方式时,作查询状态位来使用
2.串行口控制寄存器(SC0N) 进行字节操作时,寄存器地址为98H。按位操作时,各位的地 址为98H~9FH。寄存器的内容及位地址表示如下: 位地址9FH9EH9DH9CH9BH9AH99H98H 位符号 SM SM, SM, REN TB,3RB3mRI 其中与中断有关的控制位共2位: TI串行口发送中断请求标志位 当发送完一帧串行数据后,由硬件置“1”;在转向中断服务 程序后,用软件清“0°。 RI串行口接收中断请求标志位 当接收完一帧串行数据后,由硬件置“1;在转向中断服务 程序后,用软件清“03。串行中断请求由T和RI的逻辑或得 到
2. 串行口控制寄存器(SCON) 进行字节操作时,寄存器地址为98H。按位操作时,各位的地 址为98H~9FH。寄存器的内容及位地址表示如下: 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H 位符号 SM0 SM1 SM2 REN TB8 RB8 TI RI 其中与中断有关的控制位共2位: ⚫ TI——串行口发送中断请求标志位 当发送完一帧串行数据后,由硬件置“1”;在转向中断服务 程序 后,用软件清“0”。 ⚫ RI——串行口接收中断请求标志位 当接收完一帧串行数据后,由硬件置“1”;在转向中断服务 程序后,用软件清“0”。串行中断请求由TI和RI的逻辑或得 到
3.中断允许控制寄存器(IE) 进行字节操作时,寄存器地址为0A8H。按位操作时,各位的地 址为0A8H~0AFH。寄存器的内容及位地址表示如下: 位地 OAFHOAEH0ADH/0AC 址 H OABH OAAH 0A9H0A8H 位符EA 号 ES ET EⅩ ET 0 EX
3. 中断允许控制寄存器(IE) 进行字节操作时,寄存器地址为0A8H。按位操作时,各位的地 址为0A8H~0AFH。寄存器的内容及位地址表示如下: 位地 址 0AFH 0AEH 0ADH 0AC H 0ABH 0AAH 0A9H 0A8H 位符 号 EA / / ES ET1 EX1 ET0 EX0
其中与中断有关的控制位共6位: EA中断允许总控制位 EA=0中断总禁止,禁止所有中断 EA=1中断总允许,总允许后中断的禁止或允许由各中断 源的中断允许控制位进行设置。 ●EX和EX1外部中断允许控制位 EX0(EX1)=0禁止外部中断 EX0(EX1)=1允许外部中断 ET和ET定时器/计数器中断允许控制位 ET(ET1)=0禁止定时器/计数器中断 ET(ET1)=0允许定时器计数器中断 ES——串行中断允许控制位 ES=0禁止串行中断 ES=1允许串行中断
其中与中断有关的控制位共6位: ⚫ EA——中断允许总控制位 EA=0 中断总禁止,禁止所有中断 EA=1 中断总允许,总允许后中断的禁止或允许由各中断 源的中断允许控制位进行设置。 ⚫ EX0和EX1——外部中断允许控制位 EX0(EX1)=0 禁止外部中断 EX0(EX1)=1 允许外部中断 ⚫ ET0和ET1——定时器/计数器中断允许控制位 ET0(ET1)=0 禁止定时器/计数器中断 ET0(ET1)=0 允许定时器/计数器中断 ⚫ ES——串行中断允许控制位 ES=0 禁止串行中断 ES=1 允许串行中断
4.中断优先级控制寄存器(IP) IP寄存器地址0B8H,位地址为OBFH~0B8H。寄存器的内容 及位地址表示如下: 位地 OBFH OBEH|oBDH| OBCH OBBH|oBAH| OB9H OBSH 址 位符 PS PT, PX PT 0 PX 号 0 其中 PP 外部中断0优先级设定位 定时中断0优先级设定位 PX1外部中断1优先级设定位 PT1定时中断1优先级设定位 PS串行中断优先级设定位。 以上各位设置为“03时,则相应的中断源为低优先级;设置为 1”时,则相应的中断源为高优先级
4. 中断优先级控制寄存器(IP) IP寄存器地址0B8H,位地址为0BFH~0B8H。寄存器的内容 及位地址表示如下: 位地 址 0BFH 0BEH 0BDH 0BCH 0BBH 0BAH 0B9H 0B8H 位符 号 / / / PS PT1 PX1 PT0 PX0 其中: PX0——外部中断0优先级设定位; PT0——定时中断0优先级设定位; PX1——外部中断1优先级设定位; PT1——定时中断1优先级设定位; PS——串行中断优先级设定位。 以上各位设置为“0”时,则相应的中断源为低优先级;设置为 “1”时,则相应的中断源为高优先级
优先级的控制原则是 低优先级中断请求不能打断高优先级的中断服务;但高优先级 中断请求可以打断低优先级的中断服务,从而实现中断嵌套。 如果一个中断请求已被响应,则同级的其它中断服务将被禁止。 即同级不能嵌套。 如果同级的多个中断同时出现,则按CPU查询次序确定哪个中 断请求被响应。其查询次序为:外部中断0→定时中断→外部中 断→定时中断→串行中断
优先级的控制原则是: ⚫ 低优先级中断请求不能打断高优先级的中断服务;但 高优先级 中断请求可以打断低优先级的中断服务,从而实现中断嵌套。 ⚫ 如果一个中断请求已被响应,则同级的其它中断服务将被禁止。 即同级不能嵌套。 ⚫ 如果同级的多个中断同时出现,则按CPU查询次序确定哪个中 断请求被响应。其查询次序为:外部中断0→定时中断→外部中 断→定时中断→串行中断