[计算机软件及应用]第5章_中断系统.pptVIP

  • 1
  • 0
  • 约7.3千字
  • 约 52页
  • 2018-03-04 发布于浙江
  • 举报
[计算机软件及应用]第5章_中断系统

?中断服务程序部分 ?在相应的中断入口地址设置一条跳转指令,转移到中断服务程序的实际入口处; ?根据需要保护现场; ?若是串行口中断,对TI、RI清0; ?安排中断服务所做的操作(中断服务程序的主体); ?恢复现场; ?中断返回(RETI)。 2. 中断系统应用举例 把一个外部中断(设为INT0)设置为电平激活方式。其中断服务程序的末尾写上如下几条指令:  JNB P3.2, $ ; 在INT0变高前原地等待(死循环) JB P3.2, $ ; 在 INT0变低前原地等待(死循环) RETI ; 返回并执行一条指令 例1 单步操作的中断实现 条件:INT0保持低电平, 且允许INT0中断 原理:CPU就进入外部中断0服务程序, 由于有上述几条指令, 它就会停在JNB处, 原地等待。当INT0 端出现一个正脉冲(由低到高, 再到低)时, 程序就会往下执行, 执行RETI后, 将返回主程序, 往下执行一条指令, 然后又立即响应中断,以等待INT0端出现的下一个正脉冲。 这样在INT0端每出现一个正脉冲, 主程序就执行一条指令, 实现了单步执行的目的 问题:MCS-51单片机有两个外部中断输入端, 当有2个以上中断源时, 它的中断输入端就不够了 解决方法: 可以采用中断与查询相结合的方法来实现 内容:每个中断源都接在同一个外部中断输入端上, 同时利用输入口线作为多中断源情况下各中断源的识别线 例2 多中断源 图 5.6 多中断源 ORG 0003H  LJMP INT0 … INT0: PUSH PSW PUSH ACC JB P0.7, DV1 JB P0.6, DV2 JB P0.5, DV3 JB P0.4, DV4 GOBACK: POP ACC POP PSW RETI DV1: … ; 装置1中断服务程序 AJMP GOBACK DV2: … ; 装置2中断服务程序 … AJMP GOBACK DV3: … ; 装置3中断服务程序 … AJMP GOBACK DV4: … ; 装置4中断服务程序 … AJMP GOBACK 定时器/计数器应用举例 (P90,NP94) 例 利用定时器输出周期为2 ms的方波, 设单片机晶振频率为 6 MHz  选用T0作定时器, 输出为P1.0引脚, 2ms 的方波可由间隔1ms的高低电平相间而成, 因而只要每隔1ms对P1.0取反一次即可得到这个方波  定时1ms的初值:  因为机器周期=12÷6 MHz= 2 μs 所以1ms内T0 需要计数N次:  N= 1 ms÷2 μs = 500 由此可知: 使用方式 0 的 13 位计数器即可, T0初值X为: X=M-N=8192-500=7 692=1E0CH 但是, 因为13位计数器中, 低8位TL0只使用了5位, 其余码均计入高8位TH0的初值, 则T0的初值调整为 TH0=0F0H, TL0=0CH TMOD初始化: TMOD=00H (GATE=0, C/T=0, M1=0, M0=0) TCON初始化: 启动TR0=1 程序清单如下:  ORG 0000H  AJMP START; 复位入口 ORG 000BH AJMP TOINT ; T0中断入口 ORG 0030H START: MOV SP, #60H; 初始化程序 MOV TH0, #0F0H ; T0赋初值 MOV TL0, #0CH MOV TMOD, #00H SETB TR0 ; 启动T0 SETB ET0 ; 开T0中断 SETB EA ; 开总允许中断 MAIN: AJMP MAIN ; 主程序 TOINT: CPL P1.0 MOV TL0, #0CH MOV TH0, #0F0H RETI 例3 设计一个外部中断应用系统。主程序将P1的8个LED作

文档评论(0)

1亿VIP精品文档

相关文档