42
第 6 第 第第第第第第第第第第

第 6 章 单片机内部资源的编程

  • Upload
    yadid

  • View
    171

  • Download
    7

Embed Size (px)

DESCRIPTION

第 6 章 单片机内部资源的编程. 中断编程相关知识. 1. 单片机如何中断原来的工作?. 在本任务中当按键 S1 按下后,原来单片机正在进行的工作被打断,按键松开后单片机又恢复了原来的工作,这就是我们在前面所说的中断。 或者说, CPU 正在执行原程序时,突然,被意外事情打断,转去执行新程序。 CPU 执行新程序结束后,又回到原程序中继续执行。这样的过程就叫 中断 。. ( 1 ) MCS-51 的中断结构. 5 个中断源,两个中断优先级控制 。. ( 2 )中断处理流程. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 6 章 单片机内部资源的编程

第 6章 单片机内部资源的编程

Page 2: 第 6 章 单片机内部资源的编程

中断编程相关知识中断编程相关知识 1. 单片机如何中断原来的工作?

在本任务中当按键 S1 按下后,原来单片机正在进行的工作被打断,按键松开后单片机又恢复了原来的工作,这就是我们在前面所说的中断。 或者说, CPU 正在执行原程序时,突然,被意外事情打断,转去执行新程序。 CPU 执行新程序结束后,又回到原程序中继续执行。这样的过程就叫中断。

Page 3: 第 6 章 单片机内部资源的编程

( 1 ) MCS-51 的中断结构

5 个中断源,两个中断优先级控制 。

Page 4: 第 6 章 单片机内部资源的编程

( 2 )中断处理流程

CPU 响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述。

1 )现场保护和现场恢复

2 )中断打开和中断关闭

3 )中断服务

4 )中断返回

Page 5: 第 6 章 单片机内部资源的编程

( 3 ) MCS-51 的中断源

8051 有 5 个中断源,它们是两个外中断 INT0 ( P3.2 )和 INT1 ( P3.3 )、两个片内定时 / 计数器溢出中断TF0 和 TF1 ,一个是片内串行口中断 TI 或 RI ,这几个中断源由 TCON 和 SCON 两个特殊功能寄存器进行控制。

TCOND7 D6 D5 D4 D3 D2 D1 D0

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H

TCON 88H

Page 6: 第 6 章 单片机内部资源的编程

IE1: 外部边沿触发中断 1 请求标志,其功能和操作类似于 TF0 。IT1: 外部中断 1 类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。 IT1=1 ,边沿触发。 IT=

0 是电平触发。IE0: 外部边沿触发中断 0 请求标志,其功能和操作类似于 IE1 。IT0: 外部中断 0 类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。其功能和操作类似于 IE1

。 必须注意:在不同外部中断触发方式下,标志清除方法不一样。

Page 7: 第 6 章 单片机内部资源的编程

SCON 98H

SCOND7 D6 D5 D4 D3 D2 D1 D0

- - - - - - TI RI

位地址 99H 98H

TI: MCS-51 串行口的发送中断标志。中断响应后,必须软件清除标志。

RI: MCS-51 串行口的接收中断标志。中断响应后,必须软件清除标志。

Page 8: 第 6 章 单片机内部资源的编程

( 4 )中断的控制 MCS-51 的对中断的开放和屏蔽是由中断允许寄存器 IE( A8H )控制来实现的, IE 的结构格式如下。

IED7 D6 D5 D4 D3 D2 D1 D0

EA - - ES ET1 EX1 ET0 EX0

位地址 AFH ACH ABH AAH A9H A8H

EA: 中断总控制位, EA=1 , CPU 开放中断。 EA=0 ,CPU 禁止所有中断。ES: 串行口中断控制位, ES=1 允许串行口中断, ES=0,屏蔽串行口中断。ET1: 定时 / 计数器 T1 中断控制位。 ET1=1 ,允许 T1 中断, ET1=0 ,禁止 T1 中断。

Page 9: 第 6 章 单片机内部资源的编程

EX1: 外中断 1 中断控制位, EX1=1 ,允许外中断 1 中断, EX1=0 ,禁止外中断 1 中断。ET0: 定时 / 计数器 T0 中断控制位。 ET1=1 ,允许 T0中断, ET1=0 ,禁止 T0 中断。EX0: 外中断 0 中断控制位, EX1=1 ,允许外中断 0 中断, EX1=0 ,禁止外中断 0 中断。

MCS-51 的中断系统有两个不可寻址的优先级状态触发器,一个指出 CPU 是否在执行高优先级中断服务程序,另一个指出 CPU 是否正在执行低优先级的中断服务程序,这两个中断触发器的 1 状态分别屏蔽所有中断申请和同一级别的其他中断申请。此外, MCS-51 还有一个申请优先级寄存 IP , IP 的格式如下,字节地址是 B8H。

Page 10: 第 6 章 单片机内部资源的编程

IPD7 D6 D5 D4 D3 D2 D1 D0

- - - PS PT1 Px1 PT0 PX0

位地址 BCH BBH BAH B9H B8H

PS: 串行口中断口优先级控制位, PS=1 ,串行口中断声明为高优先级中断, PS=0 ,串行口定义为低优先级中断。PT1: 定时器 1 优先级控制位。 PT1=1 ,声明定时器 1 为高优先级中断, PT1=0 定义定时器 1 为低优先级中断。PX1: 外中断 1 优先级控制位。 PT1=1 ,声明外中断 1 为高优先级中断, PX1=0 定义外中断 1 为低优先级中断。PT0: 定时器 0 优先级控制位。 PT1=1 ,声明定时器 0 为高优先级中断, PT1=0 定义定时器 0 为低优先级中断。PX0: 外中断 0 优先级控制位。 PT1=1 ,声明外中断 0 为高优先级中断, PX1=0 定义外中断 0 为低优先级中断。

Page 11: 第 6 章 单片机内部资源的编程

( 5 )中断的响应

MCS-51CPU 在每一个机器周期顺序检查每一个中断源,在机器周期的 S6 按优先级处理所有被激活的中断请求,此时,如果 CPU 没有正在处理更高或相同优先级的中断,或者现在的机器周期不是所执行指令的最后一个机器周期,或者 CPU 不是正在执行 RETI 指令或访问 IE 和 IP 的指令(因为按 MCS-51 中断系统的特性规定,在执行完这些指令之后,还要在继续执行一条指令,才会响应中断), CPU在下一个机器周期响应激活了的最高级中断请求。

中断响应的主要内容就是由硬件自动生成一条长调用 LCALL addr16 指令,这里的 addr16 就是程序存储器中相应的中断区入口地址,这些中断源的服务程序入口地址如下:

Page 12: 第 6 章 单片机内部资源的编程

中断源 入口地址

外中断 0 0003H

定时 / 计数器 0 000BH

外中断 1 0013H

定时 / 计数器 0 001BH

串行口中断 0023H

生成 LCALL 指令后 ,CPU 紧跟着便执行之 . 首先将 PC(程序计数器 ) 的内容压入堆栈保护断点,然后把中断入口地址赋予 PC , CPU 便按新的 PC 地址(即中断服务程序入口地址)执行程序。

Page 13: 第 6 章 单片机内部资源的编程

2. 单片机中断程序怎样编制?

从上面的任务程序中,我们来体会以下中断服务程序的编制方法。

( 1 )首先必须对中断系统进行初始化,包括:1 )开中断,即设定 IE 寄存器。

2 )设定中断优先级,即设置 IP 寄存器。如上面程序中的 SETB PT0;设定时器 0 中断为高优

先级

3 )如果是外部中断,还必须设定中断响应方式,即设定IT0 、 IT1 位。

中断服务函数采用扩展属性的函数进行语法定义,格式:返回值 函数名 interrupt n其中: n 对应中断源的编号,其值 0~4 分别对应外中断 0

,定时器 0 中断,外中断 1 ,定时器 1 中断和串行口中断

Page 14: 第 6 章 单片机内部资源的编程

例题P3.2引脚接有按钮或开关,按下此按钮式开关 P1.0引脚所接的 LED点亮,再次按下后该 LED熄灭,由此反复

Page 15: 第 6 章 单片机内部资源的编程

小结:1.MCS-51 中断系统的结构及与中断有关的寄存器是什么?2.怎样编制中断服务程序?

实验实训:项目 10 中断方式实现流水灯控制 项目 11 外部中断课题 项目 12 按键使用课题要求: 课外完成编程、相关硬件安装、仿真与调试

Page 16: 第 6 章 单片机内部资源的编程

定时器 / 计数器 相关知识1. 单片机是如何进行计数的? 本次任务中,单片机完成了对 S3 键按键次数的累计,那么,单片机是如何进行计数的? 在单片机的内部结构中,我们知道在 MCS-51 的单片机内有两个 16 位可编程的定时 / 计数器,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。

Page 17: 第 6 章 单片机内部资源的编程

T1T1 由由 TH1TH1 、、 TTL1L1 构成,字节构成,字节地址为地址为 8DH8DH 、、

8BH8BH

T0T0 由由 TH0TH0 、、 TTL0L0 构成,字节构成,字节地址为地址为 8CH8CH 、、

8AH8AH

TCON则用于控制定时计数器 T0 和 T1 的启动和停止计数,同时管理定时器T0 和 T1 的溢出标志等。

特殊功能寄存器 TMOD控制定时计数器的工作

方式

Page 18: 第 6 章 单片机内部资源的编程

TMOD 89H

D7 D6 D5 D4 D3 D2 D1 D0

GATA M1 M0 GATA M1 M0

←T1 方式字段→ ←T0 方式字段→

GATE —— 门控位。

GATE = 0 启动不受 /INT0 或 /INT1 的控制;

GATE = 1 启动受 /INT0 或 /INT1 的控制。

C/T —— 外部计数器 / 定时器方式选择位

C//T = 0 定时方式;

C //T = 1 计数方式。 M1M0—— 工作模式选择位(编程可决定四种工作模式)。

Page 19: 第 6 章 单片机内部资源的编程

C//T = 0 —— 定时; C//T = 1 —— 对外计数。

定时: fosc / 12 = 1 / ( 12/fosc ) = 1 / T

N 个方波

T

计数:脉冲不等间隔。

波形等间隔,次数已定,时间确定

即对机器周期进行计数。

左图定时时间为 N*T

每个下降沿计数一次

确认一次负跳变需两个机器周期,

所以,计数频率最高为 fosc / 24 。

Page 20: 第 6 章 单片机内部资源的编程

TCON 88H

D7 D6 D5 D4 D3 D2 D1 D0

TF1 TR1 TF0 TR0

TR0 —— 定时 / 计数器 0运行控制位。

软件置位,软件复位。

TR1 —— 定时 / 计数器 1运行控制位。(用法与 TR0 类似) TF0 、 TF1 分别是定时、计数器 T0 、 T1 的溢出标志位。

Page 21: 第 6 章 单片机内部资源的编程

( 1 )定时 / 计数器的工作方式

M1M0—— 工作模式选择位(编程可决定四种工作模式)

0 0 13 位定时 / 计数器 模式 0

0 1 16 位定时 / 计数器 模式 1

1 0 8 位定时 / 计数器(自动重装初值) 模式 2

1 1 T0 8 位定时 / 计数 模式 3

1 1 T1 停止工作 模式 3

Page 22: 第 6 章 单片机内部资源的编程

1 )工作方式 0

T0 的等效逻辑结构

Page 23: 第 6 章 单片机内部资源的编程

在计数工作方式下,计数器的计数值范围是:          1~ 8192 ( 2 的 13 方)

当为定时工作方式时,定时时间的计算公式为: ( 8192 - 计数初值) ×晶振周期 ×12或 ( 8192 - 计数初值) × 机器周期其时间单位与晶振周期或机器周期相同。

如果单片机的晶振选为 6.000MHz ,则最小定时时间为:     [8192— ( 8192—1 ) ]×1/6×10-6×12=2×10-6(s)=2(us)最长定时时间为:     (8192—0)×1/6×10-6×12=16384×10-6(s)=16384(us) 。

Page 24: 第 6 章 单片机内部资源的编程

2 )工作方式 1

T0 的等效逻辑结构

Page 25: 第 6 章 单片机内部资源的编程

在工作方式 1 下,计数器的计数值范围是:          1~ 65536 ( 2 的 16 方)

当为定时工作方式 1 时,定时时间的计算公式为: ( 65536— 计数初值) × 晶振周期 ×12或 ( 65536— 计数初值) × 机器周期其时间单位与晶振周期或机器周期相同。

如果单片机的晶振选为 6.000MHz ,则最小定时时间为:

      [65536— ( 65536—1 ) ]×1/6×10-6×12=2×10-6(s)=2(us)

最长定时时间为:      (65536—0)×1/6×10-6×12=131072×10-6(s)=131072(us)

Page 26: 第 6 章 单片机内部资源的编程

3 )工作方式 2

T0 的等效逻辑结构

Page 27: 第 6 章 单片机内部资源的编程

方式 2与方式 0 、 1 的区别:

工作方式 0 和工作方式 1 的最大特点就是计数溢出后,计数器为全 0 ,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。

工作方式 2 就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中, 16 位计数器分为两部分,即以 TL0 为计数器,以 TH0 作为预置寄存器,初始化时把计数初值分别加载至 TL0 和 TH0 中,当计数溢出时,不再象方式 0 和方式 1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器 TH以硬件方法自动给计数器 TL0重新加载。

方式 2 在串口通讯时,常用作波特率发生器。

Page 28: 第 6 章 单片机内部资源的编程

4 )工作方式 3

Page 29: 第 6 章 单片机内部资源的编程

如果定时 / 计数器 0 工作于工作方式 3 ,那么定时 / 计数器 1 的工作方式就因为自己的一些控制位已被定时 / 计数器 0借用,只能工作在方式 0 、方式 1 或方式 2 下,等效电路参见下图:

Page 30: 第 6 章 单片机内部资源的编程

2.怎样编制定时程序?

例题:

用定时器实现 P1.0引脚所接的 LED每 60ms亮或灭一次,设系统晶振频率为 12HZ

Page 31: 第 6 章 单片机内部资源的编程

2.怎样编制计数程序?

例题 1:

计数到预定值即报警

例题 2:

将 T0口计数值显示出来

Page 32: 第 6 章 单片机内部资源的编程

小结:

1. 定时计数器的基本结构及其四种工作方式?

2. 定时计数程序的编制方法?

实验实训项目 8 定时器控制流水灯课题 项目 9 计数器课题要求: 课外完成编程、相关硬件安装、仿真与调试

思考与练习: 5.3 5.5

Page 33: 第 6 章 单片机内部资源的编程

串行口编程串行口编程相关知识 1. 单片机如何能收、发数据? MCS-51 单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器( SBUF ),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为 99H 。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。

Page 34: 第 6 章 单片机内部资源的编程

( 1 )基本概念

0

0

1

0

0

0

1

0

0

1

P1.0

P1.1P1.2

P1.3

RXD

TXD

单片机

外设 1

外设 2

1

1

11

1

1 0 1 0

1 0 0 0

【并行通信和串行通信】 【并行通信和串行通信】 并行通信:并行通信:数据的各位同时送出。数据的各位同时送出。

串行通信:串行通信:数据的各位逐位送出。数据的各位逐位送出。

11 )数据通信的传输方式 )数据通信的传输方式

Page 35: 第 6 章 单片机内部资源的编程

【单工方式】 数据仅按一个固定方向传送。

【半双工方式】 数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收 / 发开关转换。

【全双工方式】 允许双方同时进行数据双向传送 , 但一般全双工传输方式的线路和设备较复杂。

Page 36: 第 6 章 单片机内部资源的编程

22 )串行数据通信两种形式 )串行数据通信两种形式

【异步通信】在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,仅接着是若干个数据位 。【同步通信】发送器和接收器由同一个时钟源控制,同步传输方式去掉了起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。

这两种方式各有何优劣?

Page 37: 第 6 章 单片机内部资源的编程

33 )串行数据通信的传输速率 )串行数据通信的传输速率

串行数据传输速率有两个概念,即每秒转送的位数bps ( Bit per second )和每秒符号数—波特率( Ban

d rate ),在具有调制解调器的通信中,波特率与调制速率有关。

举例:设有一帧信息, 1 个起始位、 8 个数据位、 1 个停止位,传输速率为每秒 240 个字符。求波特率。

解:( 1+ 8+ 1 )×240 = 2400 b/s = 2400波特。

Page 38: 第 6 章 单片机内部资源的编程

(( 22 )) MCS-51MCS-51 的串行口和控制寄存器 的串行口和控制寄存器

11 )串行口数据缓冲器)串行口数据缓冲器 SBUF SBUF

在物理结构上,有一个串行口接收缓冲器 SBUF 、一个发缓冲器 SBUF ,但这两个寄存器具有同一地址( 99H )。

只允许写

只允许读

Page 39: 第 6 章 单片机内部资源的编程

22 )串行通信控制寄存器 )串行通信控制寄存器

SCON

D7 D6 D5 D4 D3 D2 D1 D0

SM0

SM1

SM2

REN TB8 RB8 TI RI

位地址 9FH 9EH9DH

9CH 9BH 9AH 99H 98H

TI / RI :中断请求标志位

RB8 :接收的第九位数

TB8 :发送的第九位数

REN :允许接收控制位

SM2 :多机通信控制位SM0 、 SM1 :工作方式选择位(四种工作方式)

Page 40: 第 6 章 单片机内部资源的编程

33 )电源管理寄存器)电源管理寄存器 PCON PCON

字节地址字节地址 87H87H ,不可位寻址。它的,不可位寻址。它的 D7D7 位位 SMODSMOD 为串为串行口波特率控制位,可由软件置位或清零。若行口波特率控制位,可由软件置位或清零。若 SMOD=1SMOD=1,则使工作在方式,则使工作在方式 11 、、 22 、、 33 时的波特率加倍。时的波特率加倍。

44 )中断允许寄存器)中断允许寄存器 IE IE

IED7 D6 D5 D4 D3 D2 D1 D0

EA - - ES ET1 EX1 ET0 EX0

位地址 AFH ACH ABH AAH A9H A8H

EA 、 ES 位控制串口中断的开启。

Page 41: 第 6 章 单片机内部资源的编程

2.单片机怎样通过程序控制收发数据?

P1 口接 8 只发光二极管, P3.2~P3.5接有 K1~K4 共 4个按键,使用串行口编程。要求( 1 )由 PC机控制单片机的 P1 口,将 PC机送出的数以二进制形式显示在发光二极管上;( 2)按下 K1向主机发送数字 0x55,按下K2向主机发送数字 0xAA

值得注意的是,由于串行发送、接收标志不能硬件自动清除,所以,不管是中断方式还是查询方式编程时都必须用软件方式清除 TI 、 RI。

Page 42: 第 6 章 单片机内部资源的编程

小结:

1. 串行口的四种工作方式各有何特点?2.怎样编制串口通讯程序?

实验实训项目 14 串口通讯课题要求:课外完成编程、相关硬件安装、仿真与调试