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
第 6章 单片机内部资源的编程
中断编程相关知识中断编程相关知识 1. 单片机如何中断原来的工作?
在本任务中当按键 S1 按下后,原来单片机正在进行的工作被打断,按键松开后单片机又恢复了原来的工作,这就是我们在前面所说的中断。 或者说, CPU 正在执行原程序时,突然,被意外事情打断,转去执行新程序。 CPU 执行新程序结束后,又回到原程序中继续执行。这样的过程就叫中断。
( 1 ) MCS-51 的中断结构
5 个中断源,两个中断优先级控制 。
( 2 )中断处理流程
CPU 响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述。
1 )现场保护和现场恢复
2 )中断打开和中断关闭
3 )中断服务
4 )中断返回
( 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
IE1: 外部边沿触发中断 1 请求标志,其功能和操作类似于 TF0 。IT1: 外部中断 1 类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。 IT1=1 ,边沿触发。 IT=
0 是电平触发。IE0: 外部边沿触发中断 0 请求标志,其功能和操作类似于 IE1 。IT0: 外部中断 0 类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。其功能和操作类似于 IE1
。 必须注意:在不同外部中断触发方式下,标志清除方法不一样。
SCON 98H
SCOND7 D6 D5 D4 D3 D2 D1 D0
- - - - - - TI RI
位地址 99H 98H
TI: MCS-51 串行口的发送中断标志。中断响应后,必须软件清除标志。
RI: MCS-51 串行口的接收中断标志。中断响应后,必须软件清除标志。
( 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 中断。
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。
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 为低优先级中断。
( 5 )中断的响应
MCS-51CPU 在每一个机器周期顺序检查每一个中断源,在机器周期的 S6 按优先级处理所有被激活的中断请求,此时,如果 CPU 没有正在处理更高或相同优先级的中断,或者现在的机器周期不是所执行指令的最后一个机器周期,或者 CPU 不是正在执行 RETI 指令或访问 IE 和 IP 的指令(因为按 MCS-51 中断系统的特性规定,在执行完这些指令之后,还要在继续执行一条指令,才会响应中断), CPU在下一个机器周期响应激活了的最高级中断请求。
中断响应的主要内容就是由硬件自动生成一条长调用 LCALL addr16 指令,这里的 addr16 就是程序存储器中相应的中断区入口地址,这些中断源的服务程序入口地址如下:
中断源 入口地址
外中断 0 0003H
定时 / 计数器 0 000BH
外中断 1 0013H
定时 / 计数器 0 001BH
串行口中断 0023H
生成 LCALL 指令后 ,CPU 紧跟着便执行之 . 首先将 PC(程序计数器 ) 的内容压入堆栈保护断点,然后把中断入口地址赋予 PC , CPU 便按新的 PC 地址(即中断服务程序入口地址)执行程序。
2. 单片机中断程序怎样编制?
从上面的任务程序中,我们来体会以下中断服务程序的编制方法。
( 1 )首先必须对中断系统进行初始化,包括:1 )开中断,即设定 IE 寄存器。
2 )设定中断优先级,即设置 IP 寄存器。如上面程序中的 SETB PT0;设定时器 0 中断为高优
先级
3 )如果是外部中断,还必须设定中断响应方式,即设定IT0 、 IT1 位。
中断服务函数采用扩展属性的函数进行语法定义,格式:返回值 函数名 interrupt n其中: n 对应中断源的编号,其值 0~4 分别对应外中断 0
,定时器 0 中断,外中断 1 ,定时器 1 中断和串行口中断
例题P3.2引脚接有按钮或开关,按下此按钮式开关 P1.0引脚所接的 LED点亮,再次按下后该 LED熄灭,由此反复
小结:1.MCS-51 中断系统的结构及与中断有关的寄存器是什么?2.怎样编制中断服务程序?
实验实训:项目 10 中断方式实现流水灯控制 项目 11 外部中断课题 项目 12 按键使用课题要求: 课外完成编程、相关硬件安装、仿真与调试
定时器 / 计数器 相关知识1. 单片机是如何进行计数的? 本次任务中,单片机完成了对 S3 键按键次数的累计,那么,单片机是如何进行计数的? 在单片机的内部结构中,我们知道在 MCS-51 的单片机内有两个 16 位可编程的定时 / 计数器,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。
T1T1 由由 TH1TH1 、、 TTL1L1 构成,字节构成,字节地址为地址为 8DH8DH 、、
8BH8BH
T0T0 由由 TH0TH0 、、 TTL0L0 构成,字节构成,字节地址为地址为 8CH8CH 、、
8AH8AH
TCON则用于控制定时计数器 T0 和 T1 的启动和停止计数,同时管理定时器T0 和 T1 的溢出标志等。
特殊功能寄存器 TMOD控制定时计数器的工作
方式
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—— 工作模式选择位(编程可决定四种工作模式)。
C//T = 0 —— 定时; C//T = 1 —— 对外计数。
定时: fosc / 12 = 1 / ( 12/fosc ) = 1 / T
N 个方波
T
计数:脉冲不等间隔。
波形等间隔,次数已定,时间确定
即对机器周期进行计数。
左图定时时间为 N*T
每个下降沿计数一次
确认一次负跳变需两个机器周期,
所以,计数频率最高为 fosc / 24 。
TCON 88H
D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0
TR0 —— 定时 / 计数器 0运行控制位。
软件置位,软件复位。
TR1 —— 定时 / 计数器 1运行控制位。(用法与 TR0 类似) TF0 、 TF1 分别是定时、计数器 T0 、 T1 的溢出标志位。
( 1 )定时 / 计数器的工作方式
M1M0—— 工作模式选择位(编程可决定四种工作模式)
0 0 13 位定时 / 计数器 模式 0
0 1 16 位定时 / 计数器 模式 1
1 0 8 位定时 / 计数器(自动重装初值) 模式 2
1 1 T0 8 位定时 / 计数 模式 3
1 1 T1 停止工作 模式 3
1 )工作方式 0
T0 的等效逻辑结构
在计数工作方式下,计数器的计数值范围是: 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) 。
2 )工作方式 1
T0 的等效逻辑结构
在工作方式 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)
。
3 )工作方式 2
T0 的等效逻辑结构
方式 2与方式 0 、 1 的区别:
工作方式 0 和工作方式 1 的最大特点就是计数溢出后,计数器为全 0 ,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。
工作方式 2 就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中, 16 位计数器分为两部分,即以 TL0 为计数器,以 TH0 作为预置寄存器,初始化时把计数初值分别加载至 TL0 和 TH0 中,当计数溢出时,不再象方式 0 和方式 1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器 TH以硬件方法自动给计数器 TL0重新加载。
方式 2 在串口通讯时,常用作波特率发生器。
4 )工作方式 3
如果定时 / 计数器 0 工作于工作方式 3 ,那么定时 / 计数器 1 的工作方式就因为自己的一些控制位已被定时 / 计数器 0借用,只能工作在方式 0 、方式 1 或方式 2 下,等效电路参见下图:
2.怎样编制定时程序?
例题:
用定时器实现 P1.0引脚所接的 LED每 60ms亮或灭一次,设系统晶振频率为 12HZ
2.怎样编制计数程序?
例题 1:
计数到预定值即报警
例题 2:
将 T0口计数值显示出来
小结:
1. 定时计数器的基本结构及其四种工作方式?
2. 定时计数程序的编制方法?
实验实训项目 8 定时器控制流水灯课题 项目 9 计数器课题要求: 课外完成编程、相关硬件安装、仿真与调试
思考与练习: 5.3 5.5
串行口编程串行口编程相关知识 1. 单片机如何能收、发数据? MCS-51 单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器( SBUF ),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为 99H 。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。
( 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 )数据通信的传输方式 )数据通信的传输方式
【单工方式】 数据仅按一个固定方向传送。
【半双工方式】 数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收 / 发开关转换。
【全双工方式】 允许双方同时进行数据双向传送 , 但一般全双工传输方式的线路和设备较复杂。
22 )串行数据通信两种形式 )串行数据通信两种形式
【异步通信】在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,仅接着是若干个数据位 。【同步通信】发送器和接收器由同一个时钟源控制,同步传输方式去掉了起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。
这两种方式各有何优劣?
33 )串行数据通信的传输速率 )串行数据通信的传输速率
串行数据传输速率有两个概念,即每秒转送的位数bps ( Bit per second )和每秒符号数—波特率( Ban
d rate ),在具有调制解调器的通信中,波特率与调制速率有关。
举例:设有一帧信息, 1 个起始位、 8 个数据位、 1 个停止位,传输速率为每秒 240 个字符。求波特率。
解:( 1+ 8+ 1 )×240 = 2400 b/s = 2400波特。
(( 22 )) MCS-51MCS-51 的串行口和控制寄存器 的串行口和控制寄存器
11 )串行口数据缓冲器)串行口数据缓冲器 SBUF SBUF
在物理结构上,有一个串行口接收缓冲器 SBUF 、一个发缓冲器 SBUF ,但这两个寄存器具有同一地址( 99H )。
只允许写
只允许读
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 :工作方式选择位(四种工作方式)
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 位控制串口中断的开启。
2.单片机怎样通过程序控制收发数据?
P1 口接 8 只发光二极管, P3.2~P3.5接有 K1~K4 共 4个按键,使用串行口编程。要求( 1 )由 PC机控制单片机的 P1 口,将 PC机送出的数以二进制形式显示在发光二极管上;( 2)按下 K1向主机发送数字 0x55,按下K2向主机发送数字 0xAA
值得注意的是,由于串行发送、接收标志不能硬件自动清除,所以,不管是中断方式还是查询方式编程时都必须用软件方式清除 TI 、 RI。
小结:
1. 串行口的四种工作方式各有何特点?2.怎样编制串口通讯程序?
实验实训项目 14 串口通讯课题要求:课外完成编程、相关硬件安装、仿真与调试