3-1单键改变8流水灯状态
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Page 8
单键改变8流水灯状态 3-1 单键改变 流水灯状态
Priority)——中断优先级选择 3)IP(Interrupt Priority)——中断优先级选择 IP( MCS-51单片机具有高、低两级中断优先级, MCS-51单片机具有高、低两级中断优先级,每个中断源可通过中断 单片机具有高 优先级寄存器IP设置中断优先级。初始状态为00H IP设置中断优先级 00H。 优先级寄存器IP设置中断优先级。初始状态为00H。
Page 10
单键改变8流水灯状态 3-1 单键改变 流水灯状态
(4)中断处理的过程 中断处理过程大致分为三步:中断请求、中断响应、中断处理。 中断处理过程大致分为三步:中断请求、中断响应、中断处理。 值得注意的是: 在中断处理过程中, 值得注意的是:①在中断处理过程中,因为中断程序中断了单片机 正在处理的工作,因此必须将有关寄存器数据进行压栈保护—— ——即 正在处理的工作,因此必须将有关寄存器数据进行压栈保护——即 保护现场,待中断服务程序完成后再出栈恢复数据——即现场恢复; ——即现场恢复 保护现场,待中断服务程序完成后再出栈恢复数据——即现场恢复; ②中断返回指令为RETI,绝对不可以使用子程序返回指令RET。 中断返回指令为RETI,绝对不可以使用子程序返回指令RET。 RETI RET
*串行接口:串行口接收(发送)一次数据完毕; 串行接口:串行口接收(发送)一次数据完毕;
(P3.2)有中断信号输入 低电平触发或下降沿触发); 有中断信号输入( *外部中断0:该引脚 INT0(P3.2)有中断信号输入(低电平触发或下降沿触发); 外部中断0 (P3.3)有中断信号输入 低电平触发或下降沿触发) 有中断信号输入( *外部中断1:该引脚 INT1(P3.3)有中断信号输入(低电平触发或下降沿触发) 。 外部中断1
3-1 单键改变 流水灯状态 单键改变8流水灯状态
单键改变8流水灯状态 3-1 单键改变 流水灯状态
1.任务要求: 1.任务要求: 任务要求 通过按键K改变8 LED(发光二极管)的亮灭状态,当没有按下键时, 通过按键K改变8个LED(发光二极管)的亮灭状态,当没有按下键时, LED为亮点左流动 当按一次K键后, 为亮点左流动, LED就一起闪烁 就一起闪烁3 8个LED为亮点左流动,当按一次K键后,8个LED就一起闪烁3次,完 了继续原来的亮点左流动状态。 了继续原来的亮点左流动状态。 2.相关知识: 2.相关知识: 相关知识 完成本课题的方法很多,比如可利用循环检测K键状态的方法来做, 完成本课题的方法很多,比如可利用循环检测K键状态的方法来做, 但这里我们将使用中断的方法来做。 但这里我们将使用中断的方法来做。 中断机制:当有一个紧急情况发生了,就马上中断现在正在做的事, 中断机制:当有一个紧急情况发生了,就马上中断现在正在做的事, 去把紧急情况处理完了,再回到刚才被打断的地方继续做原来的事。 去把紧急情况处理完了,再回到刚才被打断的地方继续做原来的事。
IP D7 位地址 BFH D6 BEH D5 BDH D4 PS BCH D3 PT1 BBH D2 PX1 BAH D1 PT0 B9H D0 PX0 B8H
PS:串行接口中断优先级控制位。PS=1,设定串行接口为高优先级, PS:串行接口中断优先级控制位。PS=1,设定串行接口为高优先级, PS=0,设定串行接口为低优先级; PS=0,设定串行接口为低优先级; PT1:定时/计数器1中断优先级控制位。PT1=1,设定定时/计数器1 PT1:定时/计数器1中断优先级控制位。PT1=1,设定定时/计数器1 中断为高优先级,PT1=0,设定定时/计数器1中断为低优先级; 中断为高优先级,PT1=0,设定定时/计数器1中断为低优先级; PX1:外部中断1中断优先级控制位。PX1=1,设定外部中断1 PX1:外部中断1中断优先级控制位。PX1=1,设定外部中断1为高优 Page 9 先级,PX1=0,设定外部中断1为低优先级; 先级,PX1=0,设定外部中断1为低优先级;
(2)中断源的中断入口
某一中断源发出中断请求后,如果开放了CPU总中断和相应的源中断, CPU会暂停 某一中断源发出中断请求后,如果开放了CPU总中断和相应的源中断,则CPU会暂停 CPU总中断和相应的源中断 当前程序,转到对应的中断服务程序执行。MCS-51单片机为每个中断源定义了一个 当前程序,转到对应的中断服务程序执行。MCS-51单片机为每个中断源定义了一个 固定的中断入口地址(矢量地址),中断响应只能通过这个地址进入中断服务程序。 ),中断响应只能通过这个地址进入中断服务程序 固定的中断入口地址(矢量地址),中断响应只能通过这个地址进入中断服务程序。 中断源 外部中断0 定时/计数器0中断 外部中断1 定时/计数器1中断 串行接口中断 中断入口地址 0003H 000BH 0013H 001BH 0023H
TCON D7 TF1 位地址 8FH D6 TR1 8EH D5 TF0 8DH D4 TR0 8CH D3 IE1 8BH D2 IT1 8AH D1 IE0 89H D0 IT0 88H
_______
IE1:外部中断1的中断标志。常态为0 IE1:外部中断1的中断标志。常态为0,当有中断请求信号从IN T1 即 P3.2送到单片机时 IE1就会自动置 送到单片机时, 就会自动置1 CPU申请中断 申请中断; P3.2送到单片机时,IE1就会自动置1,向CPU申请中断; IE0:外部中断0的中断标志。功能与IE1类似; IE0:外部中断0的中断标志。功能与IE1类似; IE 单键改变 流水灯状态
为了避开中断入口地址,以外部中断0为例, 为了避开中断入口地址,以外部中断0为例,我们一般采用如下格式 编写程序: 编写程序:
ORG 0000H AJMP MAIN ORG 0003H AJMP INT_0 ORG 0030H MAIN: ;主程序 …… 主程序 INT_0:
单键改变8流水灯状态 3-1 单键改变 流水灯状态
PT0:定时/计数器0中断优先级控制位。PT0=1,设定定时/计数器0 PT0:定时/计数器0中断优先级控制位。PT0=1,设定定时/计数器0 中断为高优先级,PT0=0,设定定时/计数器0中断为低优先级; 中断为高优先级,PT0=0,设定定时/计数器0中断为低优先级; PX0:外部中断0中断优先级控制位。PX0=1,设定外部中断0 PX0:外部中断0中断优先级控制位。PX0=1,设定外部中断0为高优 先级,PX0=0,设定外部中断0为低优先级; 先级,PX0=0,设定外部中断0为低优先级; 高优先级中断可以中断正在执行的低优先级中断服务程序, 高优先级中断可以中断正在执行的低优先级中断服务程序,实现二 级中断嵌套。 级中断嵌套。而同级或低优先级中断在任何情况下都不能中断正在 执行的中断服务程序。 执行的中断服务程序。 自然优先级( 自然优先级(高→低):外部中断0→定时/计数器0中断→外部中断 ):外部中断0→定时/计数器0中断→ 外部中断0→定时 1→定时 计数器1中断→串行接口中断。 定时/ 1→定时/计数器1中断→串行接口中断。
Page 11
单键改变8流水灯状态 3-1 单键改变 流水灯状态
4.任务分析 4.任务分析 1)硬件电路分析 不妨在“ 8LED流水灯控制 的基础上进行修改, 流水灯控制” 不妨在“子任务 2-3-2 8LED流水灯控制”的基础上进行修改,为了 节约时间,可不接LED 观察单片机P2口电平变化即可。 LED, P2口电平变化即可 节约时间,可不接LED,观察单片机P2口电平变化即可。
_______
________
我们本章重点给大家介绍两个外部中断0 关于定时/ 我们本章重点给大家介绍两个外部中断0和1,关于定时/计数器中断 T0、T1暂时不作为重点 串行通信中断不讲。 暂时不作为重点, T0、T1暂时不作为重点,串行通信中断不讲。
Page 3
单键改变8流水灯状态 3-1 单键改变 流水灯状态
…… ;外部中断 的中断服务程序 外部中断0的中断服务程序 外部中断
RETI END
Page 5
单键改变8流水灯状态 3-1 单键改变 流水灯状态
(3)中断系统相关SFR 中断系统相关SFR ——外部中断定时 1)TCON(Timer Control)——外部中断定时/计数器中断请求标志 TCON(Timer Control)——外部中断定时/ TCON高 位是两个定时/计数器的相关位(暂时不作介绍);低 TCON高4位是两个定时/计数器的相关位(暂时不作介绍);低4位是 ); 两个外部中断源的相关位,共有6个位与中断有关。初始状态为00H 00H。 两个外部中断源的相关位,共有6个位与中断有关。初始状态为00H。
Page 2
单键改变8流水灯状态 3-1 单键改变 流水灯状态
(1)中断源 中断源:顾名思义,即中断响应的来源事件。MCS-51单片机有5 中断源:顾名思义,即中断响应的来源事件。MCS-51单片机有5个中 单片机有 断源
计满溢出, TF0向 申请中断; *定时/计数器0:T0计满溢出,由溢出信号中断请求标志TF0向CPU申请中断; 定时/计数器0 T0计满溢出 由溢出信号中断请求标志TF0 CPU申请中断 计满溢出, TF1向 申请中断; *定时/计数器1:T1计满溢出,由溢出信号中断请求标志TF1向CPU申请中断; 定时/计数器1 T1计满溢出 由溢出信号中断请求标志TF1 CPU申请中断
Page 6
单键改变8流水灯状态 3-1 单键改变 流水灯状态
IT1:外部中断1触发方式控制位。IT1=1, IT1:外部中断1触发方式控制位。IT1=1,选择下降沿作为中断请求 信号(推荐) IT1=0,选择低电平作为中断请求信号(默认); 信号(推荐);IT1=0,选择低电平作为中断请求信号(默认);
为什么推荐下降沿作为外部中断1的请求信号?因为下降沿作为中断请求信 为什么推荐下降沿作为外部中断1的请求信号? 号时,响应中断后,中断标志IE1会自动清0;而低电平作为中断请求信号时, 响应中断后,必须使用位指令将中断标志IE1手工清0。
IT0:外部中断0触发方式控制位。功能与IT1类似。 IT0:外部中断0触发方式控制位。功能与IT1类似。 IT1类似 IE(Interrupt Enable)—— ——中断允许寄存器 2)IE(Interrupt Enable)——中断允许寄存器 可控制各中断源的开放与禁止, 可控制各中断源的开放与禁止,也能同时控制所有中断源的开放或 禁止,默认都为禁止。初始状态为00H 00H。 禁止,默认都为禁止。初始状态为00H。
IE D7 EA 位地址 AFH D6 AEH D5 ADH D4 ES ACH D3 ET1 ABH D2 EX1 AAH D1 ET0 A9H D0 EX0 A8H
Page 7
单键改变8流水灯状态 3-1 单键改变 流水灯状态
EA:总中断允许位。相当于一个总开关,EA=1表示允许,EA=0表示禁 EA:总中断允许位。相当于一个总开关,EA=1表示允许,EA=0表示禁 表示允许 止; ES:串行接口中断允许位。ES=1表示允许,ES=0表示禁止; ES:串行接口中断允许位。ES=1表示允许,ES=0表示禁止; 表示允许 表示禁止 ET1:定时/计数器1溢出中断允许位。ET1=1表示允许,ET1=0表示禁 ET1:定时/计数器1溢出中断允许位。ET1=1表示允许,ET1=0表示禁 表示允许 止; EX1:外部中断1中断允许位。EX1=1表示允许,EX1=0表示禁止; EX1:外部中断1中断允许位。EX1=1表示允许,EX1=0表示禁止; 表示允许,EX1=0表示禁止 ET0:定时/计数器0溢出中断允许位。ET0=1表示允许,ET0=0表示禁 ET0:定时/计数器0溢出中断允许位。ET0=1表示允许,ET0=0表示禁 表示允许 止; EX0:外部中断0中断允许位。EX0=1表示允许,EX0=0表示禁止; EX0:外部中断0中断允许位。EX0=1表示允许,EX0=0表示禁止; 表示允许,EX0=0表示禁止