首页资源分类嵌入式开发51内核 > 中断(定时和计数、串口)

中断(定时和计数、串口)

已有 451617个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:中断定时和计数串口

    分    享:

    文档简介

    中断(定时和计数、串口)

    文档预览

    80C51中断系统的结构 80C51的中断系统有5个中断源(8052有 6个) ,2个优先级,可实现二 级中断嵌套 。 TCON IE IP 硬件查询 INT0 IT0 1 01 T0 INT1 IT1 1 01 T1 RX TX EX0 1 EA 1 IE0 ET0 1 TF0 EX1 1 IE1 ET1 1 TF1 RI TI ≥1 SCON ES 1 PX0 1 0 PT0 1 0 PX1 1 0 PT1 1 0 PS 1 0 自 高 然 级 1 优 先 级 中断入口 中断源 自 低 0 然 级 优 先 级 中断入口 中断源 中断请求寄存器TCON TF1:定时/计数器T1溢出请求中断标志位。 T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应 中 断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以, TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效 果 TR1:T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1 由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。 TF0:T0溢出中断请求标志位,其功能与TF1类同。 TR0:T0运行控制位,其功能与TR1类同。 IT0:外部中断0触发方式控制位。当IT0=0时,为电平触发方式。 当IT0=1时,为边沿触发方式(下降沿有效)。 IE0:部中断0中断请求标志位。 IT1:外部中断1触发方式控制位。 IE1:外部中断1中断请求标志位。 TF0:定时/计数器T0溢出中断请求标志位。 中断允许寄存器IE CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中 断允许寄存器IE控制的。 EA:CPU中断允许(总允许)位。 ES:串行口中断允许位; 5-6位未定义,6位ET2:定时器/计数器溢出中断允许位,C52,S52和C201中 没有T2 ET1:定时/计数器T1中断允许位; EX0:外部中断0允许位; ET0:定时/计数器T0中断允许位; EX1:外部中断0允许位; 中断优先级寄存器IP 定时器的初始化 在使用定时器/计数器前,应首先对其进行初始化 编程。 一、定时器的初始化步骤 1、选择工作模式和工作方式。 设置TMOD、T2MOD。 2、设置定时器的计数初值。 设置THx和TLx,RCAP2H和RCAP2L。 3、中断设置:设置IE。 4、启动定时器。 设置TCON或T2CON。 可以使用位操作指令。例如:SETB TRx。 定时器/计数器初值计算 根据定时器/计数器的模式和方式,计算计数初值(注意T2) 计数器的长度为n,则计数的最大值为2n 。 1、工作于定时方式 计数脉冲由内部的时钟提供,每个机器周期进行加1。 设晶振频率为fosc,则计数脉冲的频率为fosc/12,计数脉冲周期T=1/( fosc/12)。 如果进行定时时间为t,计数初值为X,则: t=( 2n -X)×12/fosc 2、工作于计数方式 当工作在计数方式时,对外部脉冲计数。利用计数器计数结束产生溢出的特性 ,来计算初值X 。则有: X= 2n—计数次数 定时/计数器工作方式寄存器TMOD 工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用 于T0,高四位用于T1。其格式如下: GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可 以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中 断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了 一条件。 16位定时器:定时/计数模式选择位。 C/T=0为定时模式;C/T=1为计数模式。 M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。 6.2.1 模式0的逻辑结构及应用 M1M0=00,选择模式0。逻辑结构如图6-5 所示。(以T0为例) T0的结构:13位定时器/计数器。 由TH0的8位、TL0的低5位构成(高3位未 用) 工作过程:TL0溢出后向TH0进位,TH0溢 出后将TF0置位,并向CPU申请中断。 定时时间=(213-定时初值)×机器周期 最大定时时间:213×机器周期 6.2.1 模式0的逻辑结构及应用 C/T=1,计数方式。计数脉冲由P3.4引脚输 入。 C/T=0时,定时方式。 振荡器 12分频 T0(P3.4) C/T=0 C/T=1 TR0 GATE & + TL0 TH0 (5位) (8位) P3.2 图6-5 模式0的逻辑结构图 TF0 中断 6.2.2 模式1的逻辑结构及应用 M1M0=01时,选择模式1。逻辑结构如下 页图所示。 T0的结构:16位定时器/计数器。 TL0:存放计数初值的低8位。 TH0存放计数初值的高8位; 定时时间=(216-定时初值)×机器周期 最大定时时间:216×机器周期 6.2.2 模式1的逻辑结构及应用 振荡器 12分频 C/T=0 T0(P3.4) C/T=1 TR0 GATE & + P3.2 TL0 TH0 (8位) (8位) TF0 中断 工作过程:当TL0计满时,向TH0进1;当 TH0计满时,溢出使TF0=1,向CPU申请中断。 MCS-51单片机之所以设置几乎完全一 样 的 方式0和方式1,是出于与 MCS-48单片机兼容的 。 6.2.3 模式2的逻辑结构及应用 M1 M0 =10时,选择模式2。逻辑结构 如图6-7所示。 T0的结构: TL0:8位的定时器/计数器; TH0:8位预置寄存器,用于保存初值 。 工作过程:当TL0计满溢出时,TF0置1 ,向CPU发出中断请求;同时引起重装操作 (TH0的计数初值送到TL0),进行新一轮 计数。 6.2.3 模式2的逻辑结构及应用 振荡器 12分频 T0(P3.4) C/T=0 C/T=1 TR0 GATE & + P3.2 TL0 (8位) TH0 (8位) 图6-7 模式2的逻辑结构图 TF0 中断 6.2.3 模式2的逻辑结构及应用 定时时间=(28 - 初值)×机器周期 最大定时时间=28 ×机器周期 优点:模式2能够进行自动重装载。模式0 和1计数溢出后,计数器为全0。循环定时或 计数时,需要重新设置初值。 说明:在模式2能够满足计数或定时要求时 ,尽可能使用模式2。 6.2.4 模式3的逻辑结构及应用 1、T0模式3的结构特点 M1 M0 =11,选择模式3。逻辑结构如图 6-8和6-9所示: 结构: TL0、TH0分为两个独立的8位计数器 TL0: 8位定时器/计数器 使用T0所有的资源和控制位 TH0:8位定时器 使用T1所有的资源(中断向量、中断控制 ET1、PT1)和控制位(TR1、TF1) 6.2.4 模式3的逻辑结构及应用 振荡器 12分频 C/T=0 T0(P3.4) C/T=1 TR0 & GATE + TL0 (8位) TF0 中断 P3.2 振荡器 12分频 TH0 (8位) TF1 中断 TR1 图6-8 模式3下T0的逻辑结构图 6.2.4 模式3的逻辑结构及应用 2、T0模式3时T1的工作模式 T1可以模式0~模式2工作。 T1的结构如图6-9所示 由于TF1及中断矢量被TH0占用,所以T1 仅用作波特率发生器或其它不用中断的地方 。 T1作波特率发生器,其计数溢出直接送 至串行口。设置好工作方式,串行口波特率 发生器开始自动运行。 TMOD中T1的M1M0=11,T1停止工作。 6.2.4 模式3的逻辑结构及应用 振荡器 12分频 T1(P3.5) C/T=0 C/T=1 (a)T1模式0 TL1 TH1 (5位) (8位) 串行口 振荡器 12分频 T1(P3.5) C/T=0 C/T=1 TL1 TH1 (8位) (8位) 串行口 (b)T1模式1 振荡器 图12分6频-9 模式3下,T1的逻辑结构图 C/T=0 TL1 振荡器 12分频 T1(P3.5) C/T=0 C/T=1 TL1 (8位) 串行口 重新装入 TH1 (8位) 思考:T0工作在模式3,T1怎么进行方式设置? 6.2.4 模式3的逻辑结构及应用 1、定时器/计数器工作模式的选择方法 (1)首先计算计数值N (2)确定工作模式 原则是尽可能地选择模式2 若 N ≤ 256选择模式2,否则选择模式1 (3)如果需要增加一个定时器/计数器 选择模式3。 6.2.4 模式3的逻辑结构及应用 2、定时器/计数器初值X的计算方法 因为 X + N = 28或216 所以 X = 28或216-N (1)对定时器 设定时时间为t N = t/机器周期 所以 X = 28或216- t/机器周期 (2)对计数器 X = 28或216- N 串行口的结构 • MCS-51 单片机串行接口的硬件  P3.0 位的第二功能 —— 收端 RXD  P3.1 位的第二功能 —— 发端 TXD • MCS-51 单片机串行接口的控制  寄存器 SCON、PCON、SBUF  寄存器 IE、IP • MCS-51 单片机串行接口工作方式  方式 0  方式 1  方式 2  方式 3 有两个数据缓冲寄存器SBUF,一个输入移位寄存器,一个 串行控制寄存器SCON和一个特殊功能寄存器PCON等组成。 8 位SBUF是全双工串行接口寄存器, 它是特殊功能寄存器, 地址为 99H,不可位寻址;串行输出时为发送数据缓冲器,发送 寄存器只写不读,数据从 门 发送端TXD(P3.1)输出; SBUF TXD 串行输入时为接收数 据缓冲器,接收寄存 器只读不写,数据从 接收端 RXD(P3.0) 波 特 CPU 率 发 生 器 T1 发送控制器 TI 串行口中断 + 接收控制器 RI 输入;由指令确定是对发 SBUF RXD 移位寄存器 送寄存器或接收寄存器作用。 串行口控制寄存器SCON b7 b6 b5 b4 B3 b2 b1 b0 SM0 SM1 SM2 REN TB8 RB8 TI RI 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H • SM0、SM1 —— 串行接口工作方式定义位 SM0、SM1 = 00 —— 方式 0,8位同步移位寄存器 波特fosc/12 SM0、SM1 = 01 —— 方式 1,10 位异步接收发送 波特可 SM0、SM1 = 10 —— 方式 2,11 位异步接收发送 波特fosc/64或 SM0、SM1 = 11 —— 方式 3,11 位异步接收发送 波特可 • SM2 —— 多机通信控制位(方式2和3) M2 = 0,无多机通信 SM2 = 1,允许多机通信 • REN —— 串行口接收数据控制位 由软件置位或清除 • REN = 1,允许串行口接收数据 • REN = 0,禁止串行口接收数据 • TB8 —— 发送串行输出数据的第 9 位 • 双机通信时它可作奇偶校验位;在多机通信中可作为区别地址帧或数据帧的标识位。 • RB8 —— 接收串行输入数据的第 9 位 • 在方式2和方式3中是接收的第9位数据。 • TI —— 串行口中发送完一组数据后的中断标志 • 若串口发送完一组数据,则由硬件自动置 TI = 1 ,若串口还要发数据,则应手动编程使 TI = 0 • RI —— 串行口中接收完一组数据后的中断标志 • 若串口接收完一组数据,则由硬件自动置 RI = 1 ,若串口还要收数据,则应手动编程使 RI = 0 特殊功能寄存器PCON • 串行数据传送速率控制寄存器 —— PCON b7 b6 b5 b4 b3 b2 b1 b0 SMOD GF1 GF2 PD TD L 地址:87H TDL:等待方式位  SMOD = 0,定义波特率不变  SMOD = 1,定义波特率加倍 PD:掉电方式 GF1、 GF2通用标志位 注:PCON 寄存器的地址为87H, 仅 b7 位有用,不可位寻址。 ANL PCON,#7FH:对SMOD位清零 ORL PCON,#80H:对SMOD位置位 • 7.2.1 方式 0 —— 移位寄存器输入/输出方式 串行口为同步移位寄存器方式  非串行通信用方式-扩展并行I/O • 用并入串出移位寄存器扩展并行输入口 • 用串入并出移位寄存器扩展并行输出口  RXD、TXD 线的作用 • RXD — 串 → 并、并 → 串 数据传送线 • TXD — 同步时钟线,同步时钟为 fosc/12(固定波特率) 注:为应用串行接口扩展并行接口的方式。 • 7.2.2 方式 1 —— 10 位异步接收/发送(波特率可变) 串行口为8位异步通信接口  方式 1 的数位 • 1 位起始位 — 值 0 • 8 位数据位 — 为有用信息(低位在前,可含 1 位校验位) • 1 位停止位 — 值 1  异步传送时的速率设置 • 速率设置的方法 —— 设置定时器 T1 的初值 • 常用波特率: 用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。 • 方式 1(续)  异步发送时的工作过程 • 发送条件 —— 清 SCON 中发送中断标志 TI = 0 • 发送指令 —— MOV SBUF,A 注: 需发送的 8 位字节数据送串行数据缓冲器 SBUF 后将启动异步发送开始。 • 起始位 0、停止位 1 在执行发送指令时自动加入 • 发送传输线 —— TXD、GND • 发送 10 位数据结束 —— 发送中断标志 TI = 1 注: 若需继续发送,置TI = 0,送数据到 SBUF • 方式 1(续)  异步接收时的工作过程 • 接收条件 —— 清 SCON 中接收中断标志 RI = 0 置 SCON 中接收控制标志 REN = 1 • 接收传输线 —— RXD、GND • 接收同步位 —— 接收传输线 RXD 有从 1 到 0 的信号 • 接收数据 —— 9 位数据送数据接收器 8 位字节数据送串行数据缓冲器 SBUF 1 位停止位送入 SCON 中的 RB8 = 1 • 接收 10 位数据结束 —— 接收中断标志 RI = 1 注: 若需继续接收,置RI = 0 • 7.2.3 方式 2 —— 11 位异步接收/发送(波特率固定) 串行口为9位异步通信接口  方式 2 的数位 • 1 位起始位 —— 值 0 • 8 位数据位 —— 为 1 字节有用信息 • 1 位校验位 —— 对有用信息的奇偶校验 • 1 位停止位 —— 值 1  异步传送时的速率设置 • 若 PCON 中 SMOD = 0,速率 = fosc/32 • 若 PCON 中 SMOD = 1,速率 = fosc/64 • 方式 2(续)  异步发送时的工作过程 • 基本过程同方式 1 • 1 位校验位在发送前应先置入 SCON 中的 TB8  异步接收时的工作过程 • 基本过程同方式 1 • 1 位校验位(第 9 位)送 SCON 中的 RB8 注: RB8 中未存放 1 位停止位 • 7.2.4 方式 3 —— 11 位异步接收/发送(波特率可变) • 方式 3 —— 11 位异步接收/发送(波特率可变)  基本定义同方式 2  速率设置同方式 1 注: 方式 0 —— 固定波特率为 fosc/12 方式 2 —— 固定波特率为 fosc/32或fosc/64 上述方式与单片机主频有关 方式 1 —— 可变波特率 方式 3 —— 可变波特率 上述方式与定时器 T1 的初值有关 7.3 波特率的制定方法 波特率的定义--串行口每秒钟发送(或接收)的位数。 (1)方式0的波特率 在方式0下,串行口通信的波特率是固定的,其值为 fosc/12(fosc为主机频率)。 (2)方式2的波特率 在方式2下,通信波特率为fosc/32或fosc/64,根据特殊 功能寄存器PCON中SMOD位的状态来决定串行口在那 个波特率下工作。选择公式为: 波特率  2SMOD 64  fOSC (3)方式1或方式3的波特率 在这两种方式下,串行口波特率是由定时器 的溢出率决定的,因而波特率是可变的。波特率的 公式为波:特率  2SMOD  定时器T1溢出率 32 定时器T1溢出率  f OSC 12  1 ( 2K-初值) 式中:K为定时器T1的位数。 定时器T1产生的常用波特率 波特率 fosc(MHz) SMOD 62.5K 12 1 19.2K 11.059 1 9.6K 11.059 0 4.8K 11.059 0 2.4K 11.059 0 1.2K 11.059 0 137.5K 11.059 0 110 6 0 110 12 0 定时器T1 C/T 方式 定时器初 值 0 2 FFH 0 2 FDH 0 2 FDH 0 2 FAH 0 2 F4H 0 2 E8H 0 2 1DH 0 2 72H 0 1 FEEBH 7.3 串行口的编程和应用 • 方式 0 用于扩展并行 I/O口 • 方式 1 和方式 3 仅传送数位不同 • 方式 2 为固定波特率 • 方式 1 和方式 3 均需设置可变波特率 7.3 多机通信 多个MCS-51单片机可以利用串行口进行多机通信。在多机通信中要 保证主机与所选择的从机实现可靠地通信,必须保证串行口具有识别功能。 控制寄存器SCON的SM2位就是为满足这一条而设置的多机通信控制 位。 原理:在串行口以方式2(或方式3)接收时,若SM2=1,表示置多机 通信功能位,此时可能出现两种情况:  接收到的第9位数据为1时,数据才装入SBUF,并置中断标志 RI=1,向CPU发出中断请求。  接收到的第9位数据为0时,则不产生中断标志,信息抛弃 若SM2=0,则接收到的第9位数据不论为0还是1,都产生RI=1中断 标志,接收到的数据装入SBUF。 TXD RXD 8051 主机 多机通信系统示意图 TXD RXD 80C51 0#从机 TXD RXD 80C51 1#从机 TXD RXD 80C51 2#从机 多机通信的实现,主要靠主、从机之间正确地设置 与判断多机通信控制位SM2和发送或接收的第9数据位 (D8)。下面简述如何实现多机通信。 (1)主、从机均初始化为方式2或方式3,置SM2=1,允许 中断。 (2)主机置TB8=1,发送要寻址的从机地址。 (3)所有从机均接收主机发送的地址,并进行地址比较。 (4)被寻址的从机确认地址后,置本机。SM2=0,向主机 返回地址,供主机核对。 (5)核对无误后,主机向被寻址的从机发送命令,通知从机 接收或发送数据。 (6)通信只能在主、从机之间进行,两个从机之间的通信需 通过主机作中介。 (7)本次通信结束后,主、从机重置SM2=1,主机可再对 其他从机寻址。

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。