1 / 34

第六章 输入/输出和中断

第六章 输入/输出和中断. 6.1 输入/输出 6.2 CPU 与外设数据传送方式 6. 3 MCS-51 中断系统 6. 4 中断应用举例. 6.1 输入/输出. 查询方式. 直接传送方式. 6 . 2 CPU 与外设数据传送方式. 一、 直接传送方式 ( 无条件 ) 也称无条件传送方式, 例: 驱动指示灯、继电器、启动电机等. 初始化. Busy?. 输出数据. 结束 ?. 二、 查询方式 送数据或发命令前先检查设备状态. 例:打印机的“忙 ” 状态. 1) 输出: P1(8 位 ), 接打印机 数据口

saki
Download Presentation

第六章 输入/输出和中断

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第六章 输入/输出和中断 6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3MCS-51中断系统 6. 4 中断应用举例

  2. 6.1 输入/输出 查询方式 直接传送方式

  3. 6.2 CPU与外设数据传送方式 • 一、直接传送方式(无条件) • 也称无条件传送方式,例: • 驱动指示灯、继电器、启动电机等

  4. 初始化 Busy? 输出数据 结束? 二、查询方式 送数据或发命令前先检查设备状态 例:打印机的“忙”状态 1)输出:P1(8位), 接打印机数据口 2)输入:P3.1(1位), 接打印机的“忙”信号 低电平表示状态“忙” SETB P3.1 Busy: JNB P3.1, Busy … MOV P1, A DJNZ Rn, Busy 有什么办法可以提高CPU效率?

  5. 三、中断传送方式 有直接、查询、中断、DMA等传送方式。 查寻方式 中断方式 CPU不主动查询外设,只执行自己的程序,当外设准备好需要传送数据时,主动提出申请,(突发的),若CPU准于请求,(响应),放下正在执行的程序,去传送外设的数据。见下页图

  6. 查询 中断 仿真

  7. 温度 外设 CPU 处理 CPU 压力 外设 断电 外设 中断有硬件中断和软件中断,仅讨论硬件中断。 中断的特点:外设主动提出申请,突发性,软硬件共同完成。 中断的好处: 1、CPU分时操作(与多个外设并行工作,多任务) 2、实现实时处理 3、故障处理和调试程序 机器如何实现中断? 中断是软硬件共同组成的系统。

  8. 1、中断请求 外设向CPU发出的“中断申请信号”称“中断请求”。 键盘 打印机 请求 CPU 外设 定时器 磁盘 掉电 2、中断源 引起中断的原因,或能发出中断申请的源,称为“中断源”。通常中断源有: (1)一般的输入输出设备,如键盘,打印机等。 (2)数据通道,如磁盘,磁带等。 (3)定时器。 (4)故障源,如电源掉电。 (5)为调试程序而设的中断,如单步、断点设置等。

  9. 主程序 RETI 4、中断系统的功能 (1)响应中断及返回 (2)能实现优先权排队 中断请求 中断请求 (3)能实现中断嵌套 RETI 5、中断及响应的过程 中断源提出申请 →CPU决定是否响应→ 若响应转去中断处理 →完成后返回原中断处。

  10. 6、CPU响应中断的条件 (1)有中断请求 (2)中断请求没有被屏蔽 (3)中断是开放的或者是允许的 (4)在现行指令结束后才响应中断 7、中断响应及中断期间应做的工作 (1)关中断(硬件自动实现) (2)保留断点(硬件自动实现) (3)保护现场(软件完成) (4)给出中断,入口转入相应的中断服务程序(硬件自动完成) (5)恢复现场 (6)开中断与返回(由RETI指令实现)

  11. RETI与RET的异同点? ①相同: 匀执行恢复断点操作,即从堆栈中弹出断点给PC。 ②不同:RETI将清“0”响应时所置的优先级触发器,RET没有该功能。 中断与子程序调用的区别?

  12. 6.3 MCS-51 中断系统 MCS-51允许5个中断请求源,提供二个中断优先级,可实现二级中断服务程序嵌套。 优先级 外部中断0 中断允许 定时器0 外部中断1 定时器1 串行口中断 总允许 • 与中断系统相关的特殊功能寄存器有: • 中断源寄存器:TCON(88H),SCON(98H) • 中断允许控制寄存器IE(A8H) • 中断优先级控制寄存器IP(B8H)

  13. 一、中断请求源 1、TCON(Timer Control)定时器/计数器的控制寄存器,锁存外部中断请求标志。 ITi=0 0 INT0 ITi=1 INT1 (1)IT0、IT1 (interrupt trigger mode)外部中断请求触发方式 ①ITi=0 为低电平触发方式; ②ITi=1 为边沿触发方式; ③ ITi 可由软件置“1”或清“0”。 (2)IE0、IE1(external interrupt flag) 外部中断标志,当有外部中断请求时,置“1”该位 ①当ITi=0 时,若INTi=0,则置“1”IEi,否则清“0” IEi; ②当ITi=1 时,若INTi= 置“1”Iei; ③ IEi=1表示外部正在向CPU申请中断,CPU响应中断后自动清IEi

  14. (3) TF0、TF1(Timer overflow interrupt flag)定时器溢出中断标志 当定时器/计数器最高位进位时,置“1”TFi表示正在向CPU申请中断,CPU响应中断后,自动清“0” TFi。 二、中断控制 1、IE(Interrupt Enable)中断允许寄存器:控制中断是开放还是屏蔽的。 (1)EA(Enable All)总中断允许标志 (2)ES(Enable Series)串行口允许标志 (3)ET0、ET1(Enable Timer)定时器/计数器溢出中断标志 (4) EX0、EX1(Enable eXternal)外部中断允许标志 上述中:“1”表示允许中断,“0”表示屏蔽中断。

  15. 2、IP(Interrupt priority) 中断优先权控制寄存器(B8H) (1)PS:串行口中断优先级控制位 (2)PT0、PT1:定时器/计数器中断优先级控制位 (3)PX0、PX1:外部中断优先级控制位 上述中:“1”表示高优先级,“0”表示低优先级。

  16. 三、中断响应过程 每个周期S6→对中断源进行采样→在下一个周期按优先级顺序依次查询→如果某个中断标志在上一个周期S6已被置“1” →CPU执行硬件LCALL转向相应中断的特定单元,进入中断服务程序,但是如果遇上下列条件之一,硬件将受阻: (1)正在执行同级或高级中断服务程序。 (2)当前的查询周期不是执行指令的最后一个机器周期。 (3)正在执行RETI或任何仿问IE或IP的指令。 CPU响应中断时先置“1”相应的优先级触发器,然后执行硬件LCALL(压栈与转移),同时清“0”中断请求标志(TI、RI除外)。

  17. 中断服务程序入口: IE0 0003H~000AH IT0 000BH~0012H IE1 0013H~001AH IT1 001BH~0022H IS 0023H~002AH 在中断服务程序的最后,须放一条指令RETI,该指令清“0”响应时所置的优先级触发器(RET没有此操作),然后返回。 举例:

  18. ORG 0003H LJMP INTP ORG 0040H CLR P1.0 CLR IT0 ;低电平触发 SETB PX0 ;高优先级 SETB EA ;开总中断 SETB EX0 ;开INT0中断 ORG 0100H INTP:JB F0, FS CLR P1.0 ;F0=0,关水 CPL F0 RETI FS: SETB P1.0 ;F0=1,放水 CPL F0 RETI 主程序

  19. 简单I/O实验(实验四)(交通灯控制) • 系统晶振是 11.0592 MHz • ORG 0000H • LJMP START • ORG 0040H • START: • MOV SP,#60H • LCALL STATUS0 ;初始状态(都是红灯) • CIRCLE: LCALL STATUS1 ;南北绿灯,东西红灯 • LCALL STATUS2 ;南北绿灯闪转黄灯,东 • LCALL STATUS3 ;南北红灯,东西绿灯 • LCALL STATUS4 ;南北红灯,东西绿灯 • LJMP CIRCLE • STATUS0: ;南北红灯,东西红灯 • MOV DPTR,#8300H • MOV A,#0FH • MOVX @DPTR,A • MOV R2,#10 ;延时1秒

  20. LCALL DELAY • RET • STATUS1: ;南北绿灯,东西红灯 • MOV DPTR,#08300H • MOV A,#96H ;南北绿灯,东西红灯 • MOVX @DPTR,A • MOV R2,#200 ;延时20秒 • LCALL DELAY • RET • STATUS2: ;南北绿灯闪转黄灯, • MOV DPTR,#8300H • MOV R3,#03H ;绿灯闪3次 • FLASH: MOV A,#9FH • MOVX @DPTR,A • MOV R2,#03H • LCALL DELAY • MOV A,#96H • MOVX @DPTR,A

  21. MOV R2,#03H • LCALL DELAY • DJNZ R3,FLASH • MOV A,#06H ;南北黄灯,东西红灯 • MOVX @DPTR,A • MOV R2,#10 ;延时1秒 • LCALL DELAY • RET • STATUS3: ;南北红灯,东西绿灯 • MOV DPTR,#8300H • MOV A,#69H • MOVX @DPTR,A • MOV R2,#200 ;延时20秒 • LCALL DELAY • RET • STATUS4: ;南北红灯,东西绿灯 • MOV DPTR,#8300H • MOV R3,#03H ;绿灯闪3次

  22. FLASH1: MOV A,#6FH • MOVX @DPTR,A • MOV R2,#03H • LCALL DELAY • MOV A,#69H • MOVX @DPTR,A • MOV R2,#03H • LCALL DELAY • DJNZ R3,FLASH1 • MOV A,#09H ;南北红灯,东西黄灯 • MOVX @DPTR,A • MOV R2,#10 ;延时1秒 • LCALL DELAY • NOP • RET • DELAY: ;延时子程序 • PUSH 2 • PUSH 1

  23. PUSH 0 • DELAY1: MOV 1,#00H • DELAY2: MOV 0,#0B2H • DJNZ 0,$ • DJNZ 1,DELAY2 ;延时 100 mS • DJNZ 2,DELAY1 • POP 0 • POP 1 • POP 2 • RET • END

  24. 举例: • 外部中断实验(实验五)(急救车与交通灯) • 系统晶振是 11.0592 MHz • ORG 0000H • LJMP START • ORG 0003H ;INT 0 中断入口地址 • LJMP INT0 • ORG 0040H • START: • MOV SP,#60H • SETB EX0 ;INT 0 中断有效 • SETB IT0 • SETB EA • LCALL STATUS0 ;初始状态(都是红灯) • CIRCLE: LCALL STATUS1 ;南北绿灯,东西红灯 • LCALL STATUS2 ;南北绿灯闪转黄灯,东 • LCALL STATUS3 ;南北红灯,东西绿灯 • LCALL STATUS4 ;南北红灯,东西绿灯闪

  25. LJMP CIRCLE • INT0: • PUSH PSW ;保护现场 • PUSH 2 • PUSH ACC • MOV DPTR,#8300H • MOV A,#0FH ;南北,东西都亮红灯 • MOVX @DPTR,A • MOV R2,#100 ;延时10秒 • LCALL DELAY • POP ACC ;恢复现场 • MOVX @DPTR,A • POP 2 • POP PSW • RETI • STATUS0: ;南北红灯,东西红灯 • MOV DPTR,#8300H • MOV A,#0FH

  26. MOVX @DPTR,A • MOV R2,#10 ;延时1秒 • LCALL DELAY • RET • STATUS1: ;南北绿灯,东西红灯 • MOV DPTR,#8300H • MOV A,#96H ;南北绿灯,东西红灯 • MOVX @DPTR,A • MOV R2,#200 ;延时20秒 • LCALL DELAY • RET • STATUS2: ;南北绿灯闪转黄灯,东 • MOV DPTR,#8300H • MOV R3,#03H ;绿灯闪3次 • FLASH: MOV A,#9FH • MOVX @DPTR,A • MOV R2,#03H • LCALL DELAY

  27. MOV A,#96H • MOVX @DPTR,A • MOV R2,#03H • LCALL DELAY • DJNZ R3,FLASH • MOV A,#06H ;南北黄灯,东西红灯 • MOVX @DPTR,A • MOV R2,#10 ;延时1秒 • LCALL DELAY • RET • STATUS3: ;南北红灯,东西绿灯 • MOV DPTR,#8300H • MOV A,#69H • MOVX @DPTR,A • MOV R2,#200 ;延时20秒 • LCALL DELAY • RET • STATUS4: ;南北红灯,东西绿灯

  28. MOV DPTR,#8300H • MOV R3,#03H ;绿灯闪3次 • FLASH1: MOV A,#6FH • MOVX @DPTR,A • MOV R2,#03H • LCALL DELAY • MOV A,#69H • MOVX @DPTR,A • MOV R2,#03H • LCALL DELAY • DJNZ R3,FLASH1 • MOV A,#09H ;南北红灯,东西黄灯 • MOVX @DPTR,A • MOV R2,#10 ;延时1秒 • LCALL DELAY • NOP • RET

  29. DELAY: ;延时子程序 • PUSH 2 • PUSH 1 • PUSH 0 • DELAY1: MOV 1,#00H • DELAY2: MOV 0,#0B2H • DJNZ 0,$ • DJNZ 1,DELAY2 ;延时 100 mS • DJNZ 2,DELAY1 • POP 0 • POP 1 • POP 2 • RET • END

  30. 练习题 P112-1 ORG 100H INBUF EQU 30H OUTBUF EQU 1000H MOV R0, #INBUF MOV DPTR, #OUTBUF MOV R7, #10H LOOP: CLR C MOV A, @R0 SUBB A, #0DH JZ END1 MOV A, @R0 MOV @R1, A INC R0 INC R1 DJNZ R7, LOOP END1: RET END

  31. P112-3 ORG 100H MOV R7, #08H MOV B, R7 MOV DPTR, #TABLE LOOP: CLR A MOV R0, A MOVC A,@A+DPTR ADD A, R0 MOV R0, A INC DPTR DJNZ R7, LOOP DIV AB RET TABLE: DB 00H,01H,02H,03H,04H,05H,06H,07H END

  32. P112-7 ORG 100H MOV DPTR, #TABLE MOV R7, #0AH LOOP: MOVX A, @DPTR SETB ACC.7 MOVX @DPTR, A INC DPTR DJNZ R7, LOOP RET TABLE: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H

  33. P112-13 ORG 100H DATA1 EQU 30H MOV R0, #DATA1 MOV A, @R0 CPL A ADD A, 1 MOV @R0, A INC R0 MOV A, @R0 CPL A ADDC A, 0 RET END

More Related