第六章  输入/输出和中断
This presentation is the property of its rightful owner.
Sponsored Links
1 / 34

第六章 输入/输出和中断 PowerPoint PPT Presentation


  • 82 Views
  • Uploaded on
  • Presentation posted in: General

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

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


4030206

第六章 输入/输出和中断

6.1 输入/输出

6.2 CPU与外设数据传送方式

6. 3MCS-51中断系统

6. 4 中断应用举例


4030206

6.1 输入/输出

查询方式

直接传送方式


4030206

6.2 CPU与外设数据传送方式

  • 一、直接传送方式(无条件)

  • 也称无条件传送方式,例:

  • 驱动指示灯、继电器、启动电机等


4030206

初始化

Busy?

输出数据

结束?

二、查询方式

送数据或发命令前先检查设备状态

例:打印机的“忙”状态

1)输出:P1(8位), 接打印机数据口

2)输入:P3.1(1位), 接打印机的“忙”信号

低电平表示状态“忙”

SETB P3.1

Busy: JNB P3.1, Busy

MOV P1, A

DJNZ Rn, Busy

有什么办法可以提高CPU效率?


4030206

三、中断传送方式

有直接、查询、中断、DMA等传送方式。

查寻方式

中断方式

CPU不主动查询外设,只执行自己的程序,当外设准备好需要传送数据时,主动提出申请,(突发的),若CPU准于请求,(响应),放下正在执行的程序,去传送外设的数据。见下页图


4030206

查询

中断

仿真


4030206

温度

外设

CPU

处理

CPU

压力

外设

断电

外设

中断有硬件中断和软件中断,仅讨论硬件中断。

中断的特点:外设主动提出申请,突发性,软硬件共同完成。

中断的好处:

1、CPU分时操作(与多个外设并行工作,多任务)

2、实现实时处理

3、故障处理和调试程序

机器如何实现中断?

中断是软硬件共同组成的系统。


4030206

1、中断请求

外设向CPU发出的“中断申请信号”称“中断请求”。

键盘

打印机

请求

CPU

外设

定时器

磁盘

掉电

2、中断源

引起中断的原因,或能发出中断申请的源,称为“中断源”。通常中断源有:

(1)一般的输入输出设备,如键盘,打印机等。

(2)数据通道,如磁盘,磁带等。

(3)定时器。

(4)故障源,如电源掉电。

(5)为调试程序而设的中断,如单步、断点设置等。


4030206

主程序

RETI

4、中断系统的功能

(1)响应中断及返回

(2)能实现优先权排队

中断请求

中断请求

(3)能实现中断嵌套

RETI

5、中断及响应的过程

中断源提出申请 →CPU决定是否响应→ 若响应转去中断处理 →完成后返回原中断处。


4030206

6、CPU响应中断的条件

(1)有中断请求

(2)中断请求没有被屏蔽

(3)中断是开放的或者是允许的

(4)在现行指令结束后才响应中断

7、中断响应及中断期间应做的工作

(1)关中断(硬件自动实现)

(2)保留断点(硬件自动实现)

(3)保护现场(软件完成)

(4)给出中断,入口转入相应的中断服务程序(硬件自动完成)

(5)恢复现场

(6)开中断与返回(由RETI指令实现)


4030206

RETI与RET的异同点?

①相同: 匀执行恢复断点操作,即从堆栈中弹出断点给PC。

②不同:RETI将清“0”响应时所置的优先级触发器,RET没有该功能。

中断与子程序调用的区别?


4030206

6.3 MCS-51 中断系统

MCS-51允许5个中断请求源,提供二个中断优先级,可实现二级中断服务程序嵌套。

优先级

外部中断0

中断允许

定时器0

外部中断1

定时器1

串行口中断

总允许

  • 与中断系统相关的特殊功能寄存器有:

  • 中断源寄存器:TCON(88H),SCON(98H)

  • 中断允许控制寄存器IE(A8H)

  • 中断优先级控制寄存器IP(B8H)


4030206

一、中断请求源

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


4030206

(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”表示屏蔽中断。


4030206

2、IP(Interrupt priority) 中断优先权控制寄存器(B8H)

(1)PS:串行口中断优先级控制位

(2)PT0、PT1:定时器/计数器中断优先级控制位

(3)PX0、PX1:外部中断优先级控制位

上述中:“1”表示高优先级,“0”表示低优先级。


4030206

三、中断响应过程

每个周期S6→对中断源进行采样→在下一个周期按优先级顺序依次查询→如果某个中断标志在上一个周期S6已被置“1” →CPU执行硬件LCALL转向相应中断的特定单元,进入中断服务程序,但是如果遇上下列条件之一,硬件将受阻:

(1)正在执行同级或高级中断服务程序。

(2)当前的查询周期不是执行指令的最后一个机器周期。

(3)正在执行RETI或任何仿问IE或IP的指令。

CPU响应中断时先置“1”相应的优先级触发器,然后执行硬件LCALL(压栈与转移),同时清“0”中断请求标志(TI、RI除外)。


4030206

中断服务程序入口:

IE0 0003H~000AH

IT0000BH~0012H

IE10013H~001AH

IT1001BH~0022H

IS0023H~002AH

在中断服务程序的最后,须放一条指令RETI,该指令清“0”响应时所置的优先级触发器(RET没有此操作),然后返回。

举例:


4030206

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

主程序


4030206

  • 简单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秒


4030206

  • 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


4030206

  • 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次


4030206

  • 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


4030206

  • 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


4030206

  • 举例:

  • 外部中断实验(实验五)(急救车与交通灯)

  • 系统晶振是 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 ;南北红灯,东西绿灯闪


4030206

  • 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


4030206

  • 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


4030206

  • 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: ;南北红灯,东西绿灯


4030206

  • 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


4030206

  • 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


4030206

练习题

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


4030206

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


4030206

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


4030206

P112-13

ORG 100H

DATA1EQU 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


  • Login