45
1 第第第 MCS-51 第第第第第第6.1 MCS-51 第第第第第第6-1-1 第第第第第第第第第 第第第第第 计计计计计计计计计计计计计第第第第第第 第第第第第计计 CPU 计计计计计计计计计计计计计计计计计计计计计计计计计计计计计计

第六章 MCS-51 中断与定时系统

Embed Size (px)

DESCRIPTION

第六章 MCS-51 中断与定时系统. 6.1 MCS-51 单片机中断系统 6-1-1 单片机中断技术概述. 中断的概念 计算机理论中中断技术的含义: 资源共享技术. 中断的功能 : 实现 CPU 与外部设备的速度配合; 实现实时控制; 实现故障及时发现; 实现人机联系。. 中断处理: 现场保护,恢复现场; 开中断,关中断; 执行中断服务程序; 中断返回。. 向 CPU 发出中断请求的地方,称之为 中断源 。 MCS-51 单片机中断源: 3 类共 5 个。. 6-1-2 中断源. - PowerPoint PPT Presentation

Citation preview

Page 1: 第六章   MCS-51 中断与定时系统

1

第六章 MCS-51 中断与定时系统

6.1 MCS-51 单片机中断系统6-1-1 单片机中断技术概述

中断的概念

计算机理论中中断技术的含义:资源共享技术

中断的功能:

实现 CPU 与外部设备的速度配合;

实现实时控制;

实现故障及时发现;

实现人机联系。

Page 2: 第六章   MCS-51 中断与定时系统

2

中断处理:

现场保护,恢复现场;

开中断,关中断;

执行中断服务程序;

中断返回。

Page 3: 第六章   MCS-51 中断与定时系统

3

6-1-2 中断源

外部中断 0 ;中断请求信号来自引脚 ( P3.2 )

外部中断 1 ;中断请求信号来自引脚 ( P3.3 )

定时中断 0 ;

定时中断 1 ;

串行口中断。

向 CPU 发出中断请求的地方,称之为中断源。

MCS-51 单片机中断源: 3 类共 5 个。

Page 4: 第六章   MCS-51 中断与定时系统

4

外部中断请求信号来自引脚 ( P3.2 )和 ( P3.3 )0INT 1INT

请求方式有两种:电平方式;脉冲方式。

通过 TCON 的 IT0 、 IT1 选择,

电平方式( IT0 ( IT1 ) =0 ):低电平有效

脉冲方式( IT0 ( IT1 ) =1 ):脉冲负跳变有效

定时中断(内部中断):满足定时、计数的需要。

定时状态,计数状态

两个 16 位寄存器。对应 T0 、 T1

(专用寄存器 8AH 、 8BH , 8CH 、 8DH )

寄存器溢出作为有效中断请求信号

Page 5: 第六章   MCS-51 中断与定时系统

5

串行中断(内部中断):用于串行数据传送

串行口缓冲器 SBUF ( 8 位专用寄存器 99H ),

不能进行位寻址

MOV A , SBUF;接收

MOV SBUF , A;发送

Page 6: 第六章   MCS-51 中断与定时系统

6

6-1-3 中断控制

定时器控制寄存器( TCON )

字节地址 88H

位地址

位符号

F8 E8 D8 C8 B8 A8 89 88

1TF 1TR 0TF 0TR 1IE 1IT 0IE 0IT

功能:

定时器 / 计数器控制功能;

中断控制功能。

Page 7: 第六章   MCS-51 中断与定时系统

7

IE0 ( IE1 )——外中断请求标志位

硬件置位——当 CPU 采样到 出现有效中断请求时。

中断响应完成,转向中断服务程序时,硬件自动清零。

)INT(INT 10

IT0 ( IT1 )——外中断请求信号方式控制位

IT0 ( IT1 ) =1 脉冲方式(负跳变有效);

IT0 ( IT1 ) =0 电平方式(低电平有效)。

TF0 ( IF1 )——计数溢出标志

硬件置位——当计数器产生计数溢出时。

转向中断服务程序时,硬件清零。

Page 8: 第六章   MCS-51 中断与定时系统

8

位地址

位符号

F9 E9 D9 C9 B9 A9 99 98

1SM0SM 2SM REN 8TB 8RB TI RI

串行口控制寄存器( SCON )字节地址 98H

TI—— 串行口发送中断请求标志位

当发送完一帧串行数据后,硬件置位;在转向中断服务程序

后,用软件清零。

RI—— 串行口接收中断请求标志位

当接收完一帧串行数据后,硬件置位;在转向中断服务程序

后,用软件清零。

Page 9: 第六章   MCS-51 中断与定时系统

9

位地址

位符号

AF AE AD AC AB AA 9A 8A

/EA / ES 1ET 1EX 0ET 0EX

中断允许控制寄存器( IE ) 字节地址 A8H

EA—— 中断允许总控制位

EA=0 中断总禁止;

EA=1 中断总允许

EX0 ( EX1 )——外部中断允许控制位

EX0 ( EX1 ) =0 禁止外中断;

EX0 ( EX1 ) =1 允许外中断

Page 10: 第六章   MCS-51 中断与定时系统

10

ET0 ( ET1 )——定时 / 计数中断允许控制位

ET0 ( ET1 ) =0 禁止定时(计数)中断;

ET0 ( ET1 ) =1 允许定时(计数)中断

ES—— 串行中断允许控制位

ES=0 禁止串行中断;

ES=1 允许串行中断

Page 11: 第六章   MCS-51 中断与定时系统

11

位地址

位符号

BF BE BD BC BB BA 9B 8B

// / PS 1PT 1PX 0PT 0PX

中断优先级控制寄存器( IE ) 字节地址 B8H

PS—— 串行中断优先级设定位;

PT1—— 定时中断 1 优先级设定位

PT0—— 定时中断 0 优先级设定位

PX1—— 外部中断 1 优先级设定位

PX0—— 外部中断 0 优先级设定位

0 :优先级低

1 :优先级高

Page 12: 第六章   MCS-51 中断与定时系统

12

中断优先级控制原则:

1 )低优先级中断请求不能打断高优先级中断请求;高优先级中断请求可以打断低优先级中断请求。

2 )如果一个中断请求已被响应,则同级的其他中断响应将被禁止。

3 )如果同级的多个中断请求同时出现,则按 CPU 查询次序确定哪个中断请求被响应。

查询次序: 外部中断 0 定时中断 0 外部中断 1 定时中断 1 串行中断。

Page 13: 第六章   MCS-51 中断与定时系统

13

6-1-4 中断响应过程

)INT(INT 10

)IE(IE 10

外部中断请求采样:( S5P2 对中断请求引脚采样)

采样 引脚

电平方式:采样到低电平,中断请求有效, IE0 ( IE1 )置 1

脉冲方式:在两个相邻机器周期采样到先高电平后低电平,则中断请求有效, IE0 ( IE1 )置 1 。

)3.3P(INT),2.3P(INT 10

Page 14: 第六章   MCS-51 中断与定时系统

14

内部中断请求:(定时 / 计数器中断,串行中断)

中断请求发生在单片机芯片内部,不存在中断请求采样问题直接置位相应的中断请求标志位。

定时 / 计数器 0

定时 / 计数器 1)TF(TF 10

串行发送

串行接收

TI

RI

Page 15: 第六章   MCS-51 中断与定时系统

15

中断查询

当中断源有了有效的中断请求信号,并将其锁定在相应的

中断请求标志位中, CPU 通过对这些标志位的查询,感知

中断请求。

MCS-51 单片机在每个机器周期的 S6 状态按中断优先级次序

对中断请求标志位进行查询。

查询有标志位为 1 ,在紧接的下一个机器周期开始中断响应。

中断查询与响应

Page 16: 第六章   MCS-51 中断与定时系统

16

由硬件自动生成一条 LCALL 长调用指令。

LCALL addr16 (指向相应中断入口地址)

对于外部中断 0 响应

LCALL 0003H存在下列情况之一,中断响应无法进行

1 ) CPU 正在处于一个同级或高级的中断服务中;

2 )查询中断请求的机器周期不是当前执行指令的最后一个

机器周期;

3 )当前指令是返回指令( RET , RET1 )或访问 IE , IP 指令。

中断响应时间: 3~8 个机器周期

中断响应

Page 17: 第六章   MCS-51 中断与定时系统

17

6-1-5 中断请求的撤消

1 )定时器 / 计数器中断硬件撤除;

中断响应后自动清 TF0 ( TF1 )标志位。

2 )外部中断自动与强制撤除;

中断响应后硬件自动清 IE0 ( IE1 )标志位

脉冲请求方式,自动撤除;

电平请求方式强制撤除。

Page 18: 第六章   MCS-51 中断与定时系统

18

Q

SD

D

CP

0.1P

0INT

请求信号

外部中断

电平方式外部中断请求撤除电路

电平方式外部中断请求信号的真正撤除,是通过软件实现的

3 )串行中断软件撤除

标志位 TI , RI 不能通过硬件清零。只能在中断响应后用软件

清除。

Page 19: 第六章   MCS-51 中断与定时系统

19

6-2 MCS-51 单片机的定时器 / 计数器6-2-1 定时方法概述

软件定时:执行一个循环程序进行时间延迟。定时准确,不需要外加硬件电路,但增加 CPU 开销。

硬件定时:通过硬件电路实现定时,不占用 CPU 时间,但使用不够方便。

可编程定时器定时:通过对系统时钟脉冲的计数实现定时。计数值通过程序设定,定时准确,使用方便灵活。

Page 20: 第六章   MCS-51 中断与定时系统

20

6-2-2 定时器 / 计数器的定时和计数功能

MCS-51 系列单片机有两个可编程定时器 / 计数器: T0 、T1 ,

16 位寄存器,加法计数结构,地址为:

T0 ( TH0 , TL0 ): 8CH , 8AH

T1 ( TH1 , TL0 ): 8DH , 8BH

特殊功能寄存器

每个寄存器( T0 , T1 )都具有定时和计数功能

Page 21: 第六章   MCS-51 中断与定时系统

21

MCS-51 定时 / 计数器核心是一个 16 位计数器(寄存器)。

加 1 信号来源:外部计数脉冲、内部时钟脉冲。

信号来源方式:由特殊功能寄存器 TMOD 设置位 C/T 确定。

,计数方式(外部);

,定时方式(内部)。0T/C

1T/C

Page 22: 第六章   MCS-51 中断与定时系统

22

定时方式:

MCS-51 典型的指令周期(执行一条指令的时间)为一个

机器周期。机器频率是振荡频率的 12 分频。

主频为 12MHz,机器周期为 1μs,也就是说 12M晶振时,

每 1μs定时寄存器完成加 1操作。

一旦振荡周期确定,机器周期亦确定。

Page 23: 第六章   MCS-51 中断与定时系统

23

计数方式

计数脉冲来源于 T0( P3.4)、 T1 ( P3.5 )口。当检测

到输入引脚的电平由高跳变到低时,计数器加 1 。

采样( S5P2 )、加 1 ( S3P1 )操作。发生在两个机器周期,

因此需要 2个机器周期才能识别一个从“ 1”到“ 0”的

跳变。最高计数频率为振荡频率 1/24,计数频率周期必须

大于 2μs 才能满足作为计数脉冲。

Page 24: 第六章   MCS-51 中断与定时系统

24

6-2-3 MCS-51 定时 / 计数器控制与状态寄存器

工作方式控制寄存器 TMOD (状态寄存器)

GATE TC/ 1M 0M 0M1MTC/GATE

0计数器定时 / 1计数器定时 /

7 6 5 4 3 2 1 0

字节地址 89H (不可以位寻址)

Page 25: 第六章   MCS-51 中断与定时系统

25

M1M0 为操作方式选择位

11

10

01

00

3

2

1

0

方式

方式

方式

方式

无效位计数器,分成两个

位计数器自动再装入

位计数器

位计数器

1T80T

8

16

13

0M1M 操作方式 功能说明

:选择定时 / 计数器模式 ,计数模式; ,定时模式GATE :选通控制GATE=0 ,选通, 通过 TRX启动定时器。

GATE=1 , 端口高电平,通过 TRX启动定时器。XINT

0T/C 1T/C

T/C

Page 26: 第六章   MCS-51 中断与定时系统

26

启停与中断控制寄存器 TCON (控制寄存器)

字节地址 88H

1TF 1TR 0TF 0TR 0IT0IE1IT1IE

7 6 5 4 3 2 1 0

TCON 由定时 / 计数器和中断系统合用。

TR0 :定时 / 计数器 0 启停控制位

由软件控制定时 / 计数器 0 的启动 /停止。

TR1 :定时 / 计数器 1 启停控制位

由软件控制定时 / 计数器 1 的启动 /停止。

Page 27: 第六章   MCS-51 中断与定时系统

27

TF0 :定时 / 计数器 0 中断请求标志位

当定时 / 计数器 0 计数回 0 时,由内部硬件置位 TF0 ( TF0=

1 ),请求中断。中断服务程序一旦执行,硬件自动清 0 ( T

F0=0 )。

TF1 :定时 / 计数器 1 中断请求标志位

当定时 / 计数器 1 计数回 0 时,由内部硬件置位 TF1 ( TF1=

1 ),请求中断。中断服务程序一旦执行,硬件自动清 0 ( T

F1=0 )。

Page 28: 第六章   MCS-51 中断与定时系统

28

IE0 :外部中断 0 中断请求标志IT0=1 , 负跳变触发中断,硬件置 IE0=1 ,当转向中断服务程序后,硬件自动清 IE0=0 。IT0=0 , 低电平触发中断。硬件置 IE0=1 ,当转向中断服务程序后,硬件自动清 IE0=0 。

IE1 :外部中断 1 中断请求标志IT1=1 , 负跳变触发中断,硬件置 IE1=1 ,当转向中断服务程序后,硬件自动清 IE1=0 。IT1=0 , 低电平触发中断。硬件置 IE1=1 ,当转向中断服务程序后,硬件自动清 IE1=0 。

0INT

0INT

1INT

1INT

Page 29: 第六章   MCS-51 中断与定时系统

29

IT0 :外部中断 0 触发方式控制位软件设置。 IT0=1 ,外部中断 ,发生 10 跳变,产生

中断请求,向主机申请中断。 IT0=0 ,则 端口低电平

触发中断。

IT1 :外部中断 1 触发方式控制位软件设置。 IT1=1 ,外部中断 ,发生 10 跳变,产生

中断请求,向主机申请中断。 IT1=0 ,则 端口低电平

触发中断。以上后四项用于中断系统。

TCON 可位寻址,其位地址为 88H—8FH 。

1INT

0INT

0INT

1INT

Page 30: 第六章   MCS-51 中断与定时系统

30

4-3 定时 / 计数器的工作方式设置 ( TMOD 寄存器)选择定时模式还是计数模式 ;

对 M1M0 的设置,用于选择 T0 、 T1 的四种操作(工作)方

式。

TL0 、 TL1 , TH0 、 TH1 两对定时 / 计数器

T/C

Page 31: 第六章   MCS-51 中断与定时系统

31

( 1 )定时 / 计数方式 0 ( 13 位计数器)

以定时 / 计数器 0 ( T0 )为例

TH0全部 8 位, TL0 低 5 位构成 13 位定时 / 计数器。

当 时(定时方式),开关接至振荡 12分频输出;

当 时(计数方式),开关接通 T0 ( P3.4 )当计数

脉冲发生负跳变计数器加 1 。

0T/C

1T/C

Page 32: 第六章   MCS-51 中断与定时系统

32

)( bit80TH )( bit50TL

0TF

&

1 ≥1

分频12

0=TC/

1=TC/

).( 43P0T

0TR

GATE

0INT).( 23P

OSC

控制

中断请求

计数示意图方式位定时 /13 0

Page 33: 第六章   MCS-51 中断与定时系统

33

定时 / 计数方式 1 ( 16 位计数器)

逻辑结构和方式 0 完全一样,只是 TL 是 8 位计数

器。

计数范围 1—65536

如晶振 6MHz ,最小定时时间为: 2s (机器周

期)

最大定时时间为: 131ms 。

Page 34: 第六章   MCS-51 中断与定时系统

34

定时 / 计数方式 2 (自动再装入 8 位计数器)

THx , TLx 相互独立( x=0 , 1 )。

TLx作为 8 位计数器, THx 是初值寄存器。 TL

x 溢出后,置 TFx申请中断。 THx初值重新装

入 TLx 。只需通过软件设置一次,启动后无限

次定时 / 计数运行。(自动进行下一次)

Page 35: 第六章   MCS-51 中断与定时系统

35

定时 / 计数方式 3 ( T0分成两个 8 位计数器, T1无效)

将 T0分成两个独立的 8 位计数器。 TL0组成完整的8 位定时 / 计数器;既能定时,又能计数。TH0 只能组成 8 位定时器(内部脉冲)。只能定时。TL0 占用 T0全部控制信号及中断请求标志位( TR0 、TF0等)TH0 只能借用 TR1 和 TF1 。P3.5 口 (T1 外部计数脉冲输入口 ) 不能占用。

Page 36: 第六章   MCS-51 中断与定时系统

36

4-4 定时 / 计数器应用

基本步骤:

工作方式控制字( TMOD )的设置;

计数初值的计算并装入 THx 、 TLx ;

中断允许位 Etx 、 EA 的设置,使主机开放中断;

启 /停位 TRx 的设置。

Page 37: 第六章   MCS-51 中断与定时系统

37

定时应用有查询、中断两种方式。

计数初值的确定

在方式 0 下,当为计数方式时,计数值范围 1—8192 ( 213 )

在方式 1 下,当为计数方式时,计数值范围 1—65536 ( 216 )

在方式 2 下,当为计数方式时,计数值范围 1—256 ( 28 )

Page 38: 第六章   MCS-51 中断与定时系统

38

当为定时方式时,

定时时间:( 2n – 计数初值) * 机器周期

晶振机器周期 12

机器周期定时时间

计数初值 -n2=

Page 39: 第六章   MCS-51 中断与定时系统

39

在方式 0 下

最小定时时间为: 2s

最大定时时间为: 16384s ( 8192*2 )

在方式 1 下

最小定时时间为: 2s

最大定时时间为: 131ms ( 65536*2 )

如晶振周期 6MHz ,机器周期为 2s 。

Page 40: 第六章   MCS-51 中断与定时系统

40

例题:生成周期为 500 s 的等宽正方波。机器晶振

6MHz 。使用 T1 以方式 0工作,由 P1.0输出

500 s

机器周期: 2 s 。定时时间 250 s 。

以 250 s 为周期在 P1.0端交替输出高低电平。

Page 41: 第六章   MCS-51 中断与定时系统

41

机器周期定时时间

计数初值 -n2=

806712581922

2502X 13

8067-4096=3971 1

3971-2048=1923 1

1923-1024=899 1

899-512=387 1

387-256=131 1

131-128=3 1

64 0

32 0

16 0

8 0

4 0

二进制表示:

1111110000011

H035

FCH8

位低

位高

H031TL,H035

FCH1TH,FCH8

位低

位高

Page 42: 第六章   MCS-51 中断与定时系统

42

程序设计(查询方式): MOV TMOD , #00H ;设置 T1

MOV TH1 , #0FCH ;计数初值

MOV TL1 , #03H ;

MOV IE , #00H ;禁止中断

SETB TR1 ;启动定时

LOOP : JBC TF1 , LOOP1 ;查询计数溢出

AJMP LOOP

LOOP1 : MOV TH1 , #FCH ;重新设置计数初值

MOV TL1 , #03H ;

CLR TF1 ;清溢出标志

CPL P1.0 ;输出

AJMP LOOP ;重复循环

Page 43: 第六章   MCS-51 中断与定时系统

43

定时工作方式 1 ( 16 位计数器)

T1 ,通过中断方式完成

65411125655362

2502X 16

H1A1TL,H1A8

FFH1TH,FFH8

位低

位高0001,1010,1111,1111

Page 44: 第六章   MCS-51 中断与定时系统

44

MOV TMOD , #10H ;设置 T1

MOV TH1 , #0FFH ;计数初值

MOV TL1 , #0A1H ;

SETB EA ;开中断

SETB ET1 ; T1 允许中断

LOOP : SETB TR1 ;定时开始

HERE : SJMP HERE

INIT : MOV TH1 , #0FFH ;重新设置计数初值

MOV TL1 , #0A1H ;

CPL P1.0 ;输出

RET1 ;中断返回

程序设计(中断方式):

Page 45: 第六章   MCS-51 中断与定时系统

45

使用 T1 ,以工作方式 1 ,定时5秒

定时 100ms ,循环 50 次,进入中断服务程序。