51单片机的中断系统和外部中断
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VCC
X1
CRYSTAL
U1
19 XTAL1
18 XTAL2
9 RST
C3
10uF
29 30 31
PSEN ALE EA
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
第六章 51单片机的中断系统和外部 中断
6.1 51单片机的中断系统 6.2 51单片机的中断处理过程 6.3 51单片机的中断服务子程序设计 6.4 51单片机的外部中断 6.5 51单片机外部中断应用实例
6.1 51单片机的中断系统
51单片机的中断体系由相关控制寄存器和外部的中断引脚组成,这些外 部中断引脚包括定时/计数器引脚T0/T1/T2/T2EX、外部中断引脚INT0/INT1 以及串口发送和接收引脚RXD/TXD。
D1 D2 D3 D4 D5 D6
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
中; • 从中断向量入口地址跳转到对应的中断服务程序中; • 执行中断服务; • 中断服务执行完成之后打开被屏蔽的中断,然后从堆栈中取出原先保
存的PC内容,使得程序可以从原先的PC地址继续运行。
6.3 51单片机的中断服务子程序设计
中断服务函数需要使用关键字interrupt来进行定义,interrupt后面的参 数0~4表明了中断源,在实际使用中常常使用using来定义在中断服务函数中 使用的寄存器组,其参数可以为0~3,分别对应通用工作寄存器组0~组3, 可以减少压入堆栈的变量内容,从而简化中断服务函数的内容,以加快程序 执行的速度。
6.2 51单片机的中断处理过程
6.2.1 51单片机中断系统的初始化步骤
1. 初始化堆栈指针SP; 2. 设置中断源的触发方式; 3. 设置中断源的优先级别; 4. 使能相应中断源。 注:在C语言编写的代码中,第一步会由编译器自动完成。
6.2 51单片机的中断处理过程
6.2.2 51单片机的中断服务子程序处理流程
1. 在中断向量入口放置一条跳转指令,让程序从中断向量入口跳转到其 实际代码的起始位置;
2. 保存当前寄存器的内容; 3. 清除中断标志位; 4. 处理中断事件; 5. 恢复寄存器内容; 6. 返回到原来主程序的执行处。
没有能够及时响应的中断请求标志位51单片机的中断处理流程 : • 屏蔽同级和低级别的中断; • 把当前程序指针PC的内容保存到堆栈中; • 根据中断标志位,把相应的中断源对应的中断向量入口地址装入到PC
在51单片机的INT0引脚上连接了一个按键,按键的一端连接到地, D1 D0
另一端通过上拉电阻连接到INT0,对该按键被按下的事件计数,并且 L2 在三位8段数码管上显示出来。另外在普通I/O引脚上连接一个按键用 D6
D5 D4
于清零计数,当计数达到999或者清零按键被按下的的时候,数码管被 D3
C1 30pF C2 30pቤተ መጻሕፍቲ ባይዱ R1 10k
标准结构:void 函数名(void) interrupt 中断标号 using 寄存器编号 {
中断函数代码; }
51单片机中断源对应的中断标号按照内部优先级从高到低的顺序分配为 0~5,外部中断0对应的中断号是0,定时/计数器T2对应的中断号是5 。
6.4 51单片机的外部中断
由中断系统和外部引脚组成,其使用P3端口的P3.2(INT0)和P3.3 (INT1)引脚来作为外部信号的输入引脚。
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
R2
100
R3
100
R4
100
Q1
NPN
L1
Q2
NPN
L2
Q3
NPN
R5
L3
D2
归零,重新DD10 开始计数。
L3
D0
外部中断INT0和INT1在使能后有两种触发方式,一种是下降沿触发, 一种是低电平触发,这两种方式可以选择,通过对定时计数器控制寄存器 TCON(Timer/Counter Control Register)的相关位的设置来切换
当IT0/IT1被置“1”时,INT0/INT1被引脚上的下降沿触发,否则由引脚 上的低电平触发。
K1 K2
10k
R6
10k
AT89C52
6.5 51单片机外部中断应用实例
6.5.1 中断计数(三极管)
4、实例的Proteus电路
D6
D5
D4
D3
D2
D1
D0
VCC
L1
D6 D5 D4 D3 D2 D1 D0
6.5 51单片机外部中断应用实例
6.5.1 中断计数(三极管)
1、三极管基础 三极管是一种用电流来控制电流的半导体器件其作用是把微弱信号放
大成辐值较大的电信号,也常常用作无触点开关有三个引脚,分布为 发射极(emitter/E)、基极(base/B)和集电极(collector/C)。
2、Proteus中的三极管 位于Transistors库中包括Bipolar、IGBT、JEET等。
6.5 51单片机外部中断应用实例
6.5.1 中断计数(三极管)
3、实例的设计思路
内部设置一个软件计数器,当检测到外部中断的时候将该软件计数器
增加,然DD65后将计数器拆分之后的值对应的字符编码通过I/O口送出驱动
D4
数码管显DD32示。
D1
D0
VCC
L1
4、实例的Proteus电路 D6
D5 D4 D3 D2
中断控制寄存器IE内部结构这个寄存器可以位寻址,可以对该寄存器相 应位进行置“1”或清“0”来对相应的中断进行操作。
中断优先级控制寄存器IP来提高某个中断的优先级别,从而达到在多个 中断同时发生时先处理该中断的目的。中断优先级控制寄存器内部结构,该 寄存器可以位寻址,如果中断源对应的控制位被置位为1,则该中断源被置 位为高优先级,否则则为低优先级,高优先级的中断事件总是被优先处理。
X1
CRYSTAL
U1
19 XTAL1
18 XTAL2
9 RST
C3
10uF
29 30 31
PSEN ALE EA
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
第六章 51单片机的中断系统和外部 中断
6.1 51单片机的中断系统 6.2 51单片机的中断处理过程 6.3 51单片机的中断服务子程序设计 6.4 51单片机的外部中断 6.5 51单片机外部中断应用实例
6.1 51单片机的中断系统
51单片机的中断体系由相关控制寄存器和外部的中断引脚组成,这些外 部中断引脚包括定时/计数器引脚T0/T1/T2/T2EX、外部中断引脚INT0/INT1 以及串口发送和接收引脚RXD/TXD。
D1 D2 D3 D4 D5 D6
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
中; • 从中断向量入口地址跳转到对应的中断服务程序中; • 执行中断服务; • 中断服务执行完成之后打开被屏蔽的中断,然后从堆栈中取出原先保
存的PC内容,使得程序可以从原先的PC地址继续运行。
6.3 51单片机的中断服务子程序设计
中断服务函数需要使用关键字interrupt来进行定义,interrupt后面的参 数0~4表明了中断源,在实际使用中常常使用using来定义在中断服务函数中 使用的寄存器组,其参数可以为0~3,分别对应通用工作寄存器组0~组3, 可以减少压入堆栈的变量内容,从而简化中断服务函数的内容,以加快程序 执行的速度。
6.2 51单片机的中断处理过程
6.2.1 51单片机中断系统的初始化步骤
1. 初始化堆栈指针SP; 2. 设置中断源的触发方式; 3. 设置中断源的优先级别; 4. 使能相应中断源。 注:在C语言编写的代码中,第一步会由编译器自动完成。
6.2 51单片机的中断处理过程
6.2.2 51单片机的中断服务子程序处理流程
1. 在中断向量入口放置一条跳转指令,让程序从中断向量入口跳转到其 实际代码的起始位置;
2. 保存当前寄存器的内容; 3. 清除中断标志位; 4. 处理中断事件; 5. 恢复寄存器内容; 6. 返回到原来主程序的执行处。
没有能够及时响应的中断请求标志位51单片机的中断处理流程 : • 屏蔽同级和低级别的中断; • 把当前程序指针PC的内容保存到堆栈中; • 根据中断标志位,把相应的中断源对应的中断向量入口地址装入到PC
在51单片机的INT0引脚上连接了一个按键,按键的一端连接到地, D1 D0
另一端通过上拉电阻连接到INT0,对该按键被按下的事件计数,并且 L2 在三位8段数码管上显示出来。另外在普通I/O引脚上连接一个按键用 D6
D5 D4
于清零计数,当计数达到999或者清零按键被按下的的时候,数码管被 D3
C1 30pF C2 30pቤተ መጻሕፍቲ ባይዱ R1 10k
标准结构:void 函数名(void) interrupt 中断标号 using 寄存器编号 {
中断函数代码; }
51单片机中断源对应的中断标号按照内部优先级从高到低的顺序分配为 0~5,外部中断0对应的中断号是0,定时/计数器T2对应的中断号是5 。
6.4 51单片机的外部中断
由中断系统和外部引脚组成,其使用P3端口的P3.2(INT0)和P3.3 (INT1)引脚来作为外部信号的输入引脚。
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
R2
100
R3
100
R4
100
Q1
NPN
L1
Q2
NPN
L2
Q3
NPN
R5
L3
D2
归零,重新DD10 开始计数。
L3
D0
外部中断INT0和INT1在使能后有两种触发方式,一种是下降沿触发, 一种是低电平触发,这两种方式可以选择,通过对定时计数器控制寄存器 TCON(Timer/Counter Control Register)的相关位的设置来切换
当IT0/IT1被置“1”时,INT0/INT1被引脚上的下降沿触发,否则由引脚 上的低电平触发。
K1 K2
10k
R6
10k
AT89C52
6.5 51单片机外部中断应用实例
6.5.1 中断计数(三极管)
4、实例的Proteus电路
D6
D5
D4
D3
D2
D1
D0
VCC
L1
D6 D5 D4 D3 D2 D1 D0
6.5 51单片机外部中断应用实例
6.5.1 中断计数(三极管)
1、三极管基础 三极管是一种用电流来控制电流的半导体器件其作用是把微弱信号放
大成辐值较大的电信号,也常常用作无触点开关有三个引脚,分布为 发射极(emitter/E)、基极(base/B)和集电极(collector/C)。
2、Proteus中的三极管 位于Transistors库中包括Bipolar、IGBT、JEET等。
6.5 51单片机外部中断应用实例
6.5.1 中断计数(三极管)
3、实例的设计思路
内部设置一个软件计数器,当检测到外部中断的时候将该软件计数器
增加,然DD65后将计数器拆分之后的值对应的字符编码通过I/O口送出驱动
D4
数码管显DD32示。
D1
D0
VCC
L1
4、实例的Proteus电路 D6
D5 D4 D3 D2
中断控制寄存器IE内部结构这个寄存器可以位寻址,可以对该寄存器相 应位进行置“1”或清“0”来对相应的中断进行操作。
中断优先级控制寄存器IP来提高某个中断的优先级别,从而达到在多个 中断同时发生时先处理该中断的目的。中断优先级控制寄存器内部结构,该 寄存器可以位寻址,如果中断源对应的控制位被置位为1,则该中断源被置 位为高优先级,否则则为低优先级,高优先级的中断事件总是被优先处理。