51单片机寄存器定时寄存器定时也不到一秒钟,如果想定时1分钟该如何定时,

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

51单片机定时工作在方式1,是16位计数方式,如果晶振频率是12M,机器周期 是1us,那么最大的定时时间也只有65.536ms,要直接定时1秒是不可能的。但是,可以定时50ms,采用中断方式,每50ms定时到,要中断一次的,在中断程序就对中断计数,中断20次的时间就是50msX20=1000ms=1秒。有了1秒计时,那1分钟就容易了,对1秒再计数啊,60秒就是1分啦。可能你没有写过时钟程序吧,电子钟程序就是这种方法,再计60分为1小时,24小时为一日,依此,可以计年月日呢。这有什么难的。关键是对中断计数,就可以解决长时间定时了。

那既然定时1分钟,需要中断次数,那中断次数存储在那个寄存器里,
看你用什么语言写程序了,用C语言写程序,用一个变量计数。用汇编写程序,就随便从R0~R7中选一个计数。是计数,不是存储。
}

专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。

专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。

阅读已结束,下载本文需要

下载文档到电脑,同时保存到云知识,更方便管理

还剩5页未读, 继续阅读

}


第六章 80C51单片机内部功 单片机内部功 能单元及应用

6.1并行 并行I/O端口 并行 端口


51系列单片机有4组I/O端口,每组端口都是8位准 双向口,共占32根引脚。每个端口都包括一个锁 存器(即专用寄存器P0~P3)、一个输出驱动器和 输入缓冲器。
P0口是一个多功能的三态双向口,能驱动8个TTL负 载。可以字节访问也可位访问,其字节访问地址为 80H,位访问地址为80H~87H。 1.位电路结构 .

2.P0口作为通用 口 . 口作为通用 口作为通用I/O口 1)输出时 CPU发出控制电平“0”封锁“与”门,将输出 上拉场效应管T1截止,同时使多路开关MUX把锁 存器与输出驱动场效应管T2栅极接通。故内部总 线与P0口同相。由于输出驱动级是漏极开路电路, 当驱动NMOS或其它电流负载时,需要外接上拉 电阻。P0的输出级可驱动8个LSTTL负载。

2)输入时---分读引脚和读锁存器 读引脚:由传送指令(MOV)实现; 读锁存器:读锁存器是先从锁存器中读取数据, 进行处理后,将处理后的数据重新写入锁存器中, 这类指令成为“读-修改-写”指令。


例如CPL P0.0指令执行时,单片机内部产生“读锁存器” 操作信号,使锁存器Q端的数据送到内部总线,在对该位 取反后,结果又送回P0.0的端口锁存器并从引脚输出。 “读锁存器”可以避免因引脚外部电路的原因而使引脚的 状态发生改变造成误读。

当P0作为普通I/O来用时,此时P0口为一个准双 向口。所谓准双向口就是在读数据之前,先要向 相应的锁存器做写1操作的I/O口;从图6-4中可以 看出,在读入端口数据时,由于输出驱动FET并 接在引脚上,如果T2导通,就会将输入的高电平 拉成低电平,产生误读。所以在端口进行输入操 作前,应先向端口锁存器写“1”,使T2截止,引 脚处于悬浮状态,变为高阻抗输入。

3.P0作为地址 数据总线 . 作为地址 作为地址/数据总线


当P0口作地址/数据复用总线用之后,就再也不能 作通用I/O口使用了。 1)P0引脚输出地址/数据信息。 2)P0引脚输出地址/输入数据

6.1.2 P1口 口 P1口是一个准双向口,它只作通用的I/O口使 用,其功能与P0口作为通用I/O口时的功能相同。 作为输出口使用时,由于其内部有上拉电阻,所 以不需要外接上拉电阻;作为输入口使用时,必 须先向锁存器写入“1”,使场效应管T截止,然后 才能读取数据。P1口能驱动4个TTL负载。P1口 即可以字节访问,也可位访问,其字节访问地址 为90H,位访问地址为90H~97H。

1. 位电路结构 P1口的位电路结构如图6-2所示,内部包含输 出锁存器、输入缓冲器(读引脚、读锁存器)以 及由FET晶体管与上拉电阻组成的输出/输入驱动 器。

口作为通用I/O口 .P1口作为通用 口 口作为通用 1)P1.X作I/O口的输出线 当CPU对P1.X锁存器写入高电平“1”时,/Q=“0”, 场效应管V1截止,P1.X引脚输出高电平。当CPU 对P1.X锁存器写入低电平“0”时,/Q=“1”,场效 应管V1导通,P1.X引脚输出低电平。注意输出高 电平不要带较重的负载。

2)P1.X作I/O口的输入线 软件首先对P1.X锁存器写高电平“1”,使场 效应管V1截止,P1.X引脚呈高电平“1”;很 微弱的电流就可把P1.X引脚拉为低电平,所以 P1.X引脚的电平是随外电路驱动的电平变化而 变化;软件读P1.X引脚时,CPU使“读引 脚”=“1”,三态缓冲器1导通,将P1.X引脚的 电平读入内部数据总线。

6.1.3 P2口 口 P2口也是一个准双向口 ,P2口能带3~4个TTL 负载。可以字节访问,也可位访问,其字节访问 地址为A0H,位访问地址为A0H~A7H。 1.位电路结构 . P2口有8条端口线,命名为P2.7~P2.0,每条 线的结构如图6-3所示。它由一个输出锁存器、转 换开关MUX、两个三态缓冲器、一个非门、输出 驱动电路和输出控制电路等组成。输出驱动电路 上有上拉电阻。

6.1.4 P3口 口 P3口是一个多功能准双向口,第一功能是作 为通用的I/O口使用,其功能和原理与P1口相同。 4 TTL 可以驱动4个TTL负载。第二功能是作为控制和特 殊功能口使用,可以字节访问也可以位访问,其 字节访问地址为B0H,位访问地址为B0H~B7H。

功能说明 串行口输入 串行口输出 外部中断0输入 外部中断1输入 定时/计数器0计数输入 定时/计数器1计数输入 外部RAM写选通(输出)


外部RAM读选通信号(输出)

P3口作为第二功能使用 通常情况下,P3口的第 二功能在应用中更为重 要,此时各引脚定义如 表6-1所示。

基本I/O口的应用举例 基本 口的应用举例 1.P0口输出功能应用举例 口输出功能应用举例 【例1】P0口做通用I/O输出口,控制8只发光 例 二极管从左到右依次点亮,再依次熄灭,电路 图如图6-5所示。

P0口 控制发光 二极管电路

2.P2口输入、P1口输出功能应用举例 . 口输入 口输入、 口输出功能应用举例 【例2】利用8个拨动开关,把8位数据送到P2 】 口,程序读入,然后送P1口显示。如图6-6所 示:

3.P1口输入功能应用举例 . 口输入功能应用举例 【例3】P1.5、P1.6、P1.7做输入口使用,P0口 】 连接8只发光二极管,要求通过与P1.5、P1.6、 P1.7相连的3个按键来控制P0口的循环灯的循环 速度,电路图如图6-5所示,输出部分如图6-7。

//用来控制显示顺序 //定时器0赋初值 //开总中断 //开定时器0中断 //启动定时器0

4.P3口输出功能举例 . 口输出功能举例 【例4】P3.7口做通用I/O输出口,控制继电器的 】 开合,以实现对外部装置(如L1灯)的控制, 电 路图如图6-8所示。

【例5】P3.5口做通用I/O输出口,控制蜂鸣器 】 断续发声,电路图如图6-9所示。

6.2中断系统 中断系统


6.2.1 中断系统概述 1.中断的概念 .
主 程 序 断 主 程 序 程 序 断 服 务 子 中断 程 中

2.中断系统应具有如下功能: .中断系统应具有如下功能: 1) 实现中断与返回 2) 能实现优先权排队 3) 高级中断能中断低级中断

当CPU正在处理某一中断源的请求时,若有优先级比它高 的中断源发出中断申请,则CPU暂停正在进行的中断服务 程序,并保留这个程序的断点;在高级的中断处理完毕后, 再回到原被中断的源程序执行中断服务程序。此过程称为 “中断嵌套”。


主程序 响应低级 中断请求 子 程 级 中 中 断 断点1 服 务 务 执行 主程 序 回主程 序 RETI
回低级 RETI 中断程序

响应低级 中断请求 程 低 级 高

3.中断的优点 . 当CPU与外设交换信息时,采用中断的方式, 有以下优点:


分时操作 实时处理 故障处理

4.中断源 . 51单片机共有5个中断源:外部中断0、外部中断1、定时/ 计数器中断0、定时/计数器中断1、串行口中断。

外部中断0 定时器中断0 外部中断1 定时器中断0 串行口发送/接受中 断

6.2.2 中断的控制与实现 中断的控制与实现是通过4个与中断相关的特 殊功能寄存器配置来完成的,它们分别是定时 /计数器控制寄存器TCON、串行口控制寄存器 SCON、中断允许控制寄存器IE以及中断优先 级控制寄存器IP。

1.定时/计数器控制寄存器 .定时 计数器控制寄存器 计数器控制寄存器TCON(88H) ( ) TCON是定时/计数器控制寄存器,它锁存2个 定时/计数器的溢出中断标志及外部中断/INT0和 /INT1的中断标志,对TCON可进行字节寻址和位 寻址。与中断有关的各位定义如下表:

1)IT0:外部中断0触发方式控制位。 IT0=0,为电平触发方式,(低电平有效)。 IT0=1,为边沿触发方式(下降沿有效)。 2)IE0:外部中断0中断请求标志位。当IE0=1时, 表示/INT0向CPU请求中断。 3)IT1:外部中断1触发方式控制位,其操作功能 与IT0类似。 4)IE1:外部中断1中断请求标志位。当IE1=1时, 表示/INT1向CPU请求中断。

5)TF0:定时/计数器T0溢出中断请求标志位。启动 T0后,定时/计数器T0从初值开始加1计数,当最高位 产生溢出时,由硬件将TF0置1,向CPU申请中断, CPU响应TF0中断时,TF0由硬件清0,TF0也可由软 件清0。 6)TF1:定时/计数器T1溢出中断请求标志位。其操 作功能和TF0类似。 TR1、TR0这2位与中断无关,仅与定时/计数器 T1和T0有关,它们的功能将在下一节中详述。 当单片机复位后,TCON被清0,则CPU关中断, 所有中断请求被禁止。

2.串行口控制寄存器SCON(98H) .串行口控制寄存器 ( ) SCON是串行口控制寄存器,其低2位锁定串 行口的发送中断和接受中断的中断请求标志TI和 RI。对SCON可进行字节寻址和位寻址其格式如 下表:

1)TI:串行口发送中断标志位,CPU将1B的 数据写入发送缓冲器SBUF时,就启动1帧串 行数据的发送,每发送完1帧串行数据后,硬 件自动置TI为1。值得注意的是CPU响应串行 口发送中断时,并不清除TI发送中断请求标志, 必须由用户在中断服务子程序中用软件对其清 0。 2)RI:串行口接受中断请求标志位。在串行 口接受完1个串行数据帧,硬件自动置RI为1。 同样,CPU在响应串行口接受中断时,并不清 除RI接受中断请求标志,必须由用户在中断服 务子程序中用软件对其清0。

3.中断允许控制寄存器IE(A8H) .中断允许控制寄存器 ( 在51系列单片机中,开中断与关中断是由中 断允许控制寄存器IE控制的。对IE可进行字节寻 址和位寻址,其格式如下表:

1)EA:中断允许总控制位 EA=0,CPU关总中断,屏蔽所有中断请求。 EA=1,CPU开总中断,这时只要各中断源中断允 许未被屏蔽,当中断到来时,就有可能得到响应。 2)ES:串行口中断允许控制位。 ES=0,禁止串行口中断;ES=1,允许串行口中断。

4.中断优先级控制寄存器IP(B8H) .中断优先级控制寄存器 ( ) 80C51单片机有两个中断优先级对于每一个中 断请求源可设置为高优先级或低优先级中断。中 断优先级控制寄存器IP就是用来设置中断源中断 优先级的。

1)PS:串行口中断优先级控制位。 PS=0,设置串行口中断为低优先级; PS=1,设置串行口中断为高优先级。 2)PT1(PT0):定时/计数器T1(T0)中断优先级控制位。 PT1(PT0)=0,设置定时/计数器T1(T0)为低优先级; PT1(PT0)=1,设置定时/计数器T1(T0)为高优先级。 3)PX1(PX0):/INT0(/INT1)中断优先级控制位。 PX1(PX0)=0,设置外部中断1(外部中断0)为低优先级; PX1(PX0)=1,设置外部中断1(外部中断0)为高优先 级;。

5.51单片机的中断优先级有 条原则: 单片机的中断优先级有3条原则 单片机的中断优先级有 条原则: CPU同时接受到几个中断时,首先响应优先级别 最高的中断请求; 正在进行的中断过程不能被新的同级或低优先级 的中断请求所中断; 正在进行的低优先级中断服务,能被高优先级中 断请求所中断。

6.2.3 中断的处理过程 1.中断响应的条件 中断响应的条件 CPU中断响应的条件是: 中断源有中断请求 此中断的中断允许位为1 CPU开总中断 同时满足这3个条件时,CPU才有可能响应中 断。

若遇到下列任一条件,硬件将受阻,不能产生 LCALL指令: CPU正在处理同级或高优先级的中断; 当前查询的机器周期不是所执行指令的最后一个 机器周期。即在完成所执行指令前,不会响应中 断,从而保证指令在执行过程中不被打断; 在执行的指令为RET、RETI或任何访问IE或IP的 指令。即只有在这些指令后面至少再执行一条指 令时才能接受中断请求。

2.外部中断响应时间 . 外部中断/INT0和/INT1电平在每一个机器周期的 S5P2被采样并锁存到IE0、IE1中,这个新置入的IE0、 IE1的状态等到下一个机器周期才被查询电路查询到, 如果中断被激活,并且满足响应条件,CPU接着执行 一条由硬件生成的子程序调用指令以转到相应的中断 服务子程序入口,该硬件调用指令本身需要两个机器 周期,这样,从产生外部中断请求到开始执行中断服 务子程序的第一条指令之间至少需要3个完整的机器 周期。 如果中断请求被前面列出的3个条件之一所阻止,则 需要更长的响应时间。

3.中断响应过程 . 中断响应过程如下:


将相应的优先级状态触发器置1(以阻断后来的同 级或低级的中断请求); 执行一条硬件LCALL指令,即把程序计数器PC的 内容压入堆栈保存,再将相应的中断服务程序的入 口地址送入PC; 执行中断服务程序。

4.中断返回 . 中断服务程序的最后一条指令必须是中断返回 指令RETI。 5.外部中断的触发方式 . 外部中断请求有2种触发方式:电平触发和 边沿脉冲触发。

6.2.4 中断服务程序的设计步骤 1.中断的初始化 1)将中断允许控制寄存器IE的相应位置1,允许相应 的中断源中断; 2)当有多个中断源共存时,根据要求设置中断优先级 控制寄存器的相应位,确定并分配所使用的中断源的 优先级。 3)对外部中断源,要设置中断请求的触发方式IT1和 IT0,以确定采用的是电平触发方式还是边沿触发方式。

2.编写中断服务程序,处理中断请求 .编写中断服务程序,


1)现场保护和现场恢复 2)关中断和开中断 3)中断处理 4)中断返回

6.2.5 外部中断的应用举例 多外部中断源系统设计――中断 1.应用一 多外部中断源系统设计 中断 和查询结合的方法

图6-14 中断和查询相结合的多 外部中断请求源系统

2.应用二 外部中断的一般应用 . 例6-2-1 如图6-15所示,按键K接至外部中断 INT1,试编写程序使得按一次键LED点亮,再按 一次,LED熄灭,循环往复。

图6-15 外部中断1实例 电路图

/*定义按键切换标志*/

/*初始化按键切换标志*/ /*初始化LED灭*/ /*开总中断*/ /*允许外部中断1中断*/ /*设置为边沿触发方式*/ /*等待中断*/

例6-2-2 如图6-16所示,用P0口控制的8只发 光二极管,实现8位二进制计数器,对INT1上 出现的脉冲进行计数。试编制程序。

图6-16 八位计数器 电路

6.3 定时器 计数器 定时器/计数器


51系列单片机内部有两个16位可编程定时器/ 计数器,即定时器T0和定时器T1。52子系列 中除这两个定时器外,还有一个定时器/计数 器T2,后者的功能比前者强。它们都具有定时 和计数的功能,并有4种工作方式可供选择。

6.3.1 定时/计数器的基本结构与工作原理 定时 计数器的基本结构与工作原理 1.定时 计数器的结构 .定时/计数器的结构

图6-17 定时/计数器T0、T1的结构 框图

2.定时/计数器的工作原理 .定时 计数器的工作原理 定时/计数器T0和T1的实质是加1计数器,即每 输入一个脉冲,计数器加1,当加到计数器全 为1时,再输入一个脉冲,就使计数器归零, 且计数器的溢出使TCON中的标志位TF0或 TF1置1,向CPU发出中断请求。只是输入的 计数脉冲来源不同,把它们分成定时与计数两 种功能。

6.3.2 定时 计数器的控制与实现 定时/计数器的控制与实现 80C51单片机定时/计数器的控制和实现由两个 特殊功能寄存器TMOD和TCON完成。TMOD 用于设置定时/计数器的工作方式;TCON用于 控制定时.计数器的启动和中断申请。

1.工作方式寄存器TMOD .工作方式寄存器 TMOD是一个特殊的专用寄存器,用于设 定T0和T1的工作方式。只能对其进行字节操 作,不能位寻址。其格式如下:

1)GATE:门控位。 GATE=0时,只要软件使TR0或TR1置1就可启 动定时器,与/INT0或/INT1引脚的电平状态没 关系。 GATE=1时,只有/INT0或/INT1引脚为高电平 且TR0或TR1由软件置1后,才能启动定时器。 2)C/T:定时或计数功能选择位。C/T=0时, 用于定时;C/T=1时,用于计数。 3)M1和M0位:T1和T0工作方式选择位。定 时/计数器有4种工作方式,有M1M0进行设 置。如下表所示:

8位自动重装初值定时/计数器

T0分成2个独立的8位定时/计数器;T1此时停止计数

2.控制寄存器TCON .控制寄存器 TCON既参与中断控制,又参与定时控制。 其低4位用于控制外部中断,已在前面介绍, 高4位用于控制定时/计数器的启动和中断申请。 其格式如下:

1)TF1和TF0:T0和T1的溢出标志位。当定 时/计数器产生计数溢出时,由硬件置1,向 CPU发出中断请求。中断响应后,由硬件自动 清0。在查询方式下,这两位作为程序的查询 标志位;中断方式下,作为中断请求标志位。 2)TR1和TR0:定时/计数器运行控制位。 TR1(TR0)=0时,定时/计数器停止工作; TR1(TR0)=1时,启动定时/计数器工作; TR1和TR0根据需要,由用户通过软件将其清 0或置1。

6.3.3 定时 计数器的工作方式 定时/计数器的工作方式 80C51单片机定时/计数器T0有4种工作方式 (方式0、1、2、3),T1有3种工作方式(方 式0、1、2)

1.方式0 .方式 当TMOD的M1M0=00时,定时/计数器工作 于方式0。方式0是一个13位的计时器/计数器, 16位的寄存器只用了高8位(TH0)和低5位 (TL0的D4~D0位)TL0的高3位未用。

2.方式1 .方式 当M1M0=01时,定时/计数器工作于方式1。 该方式为16位定时/计数器,寄存器TH0作为 高8位,TL0作为低8位,计数范围0000H~ FFFFH。

3.方式2 .方式 当M1M0=10时,定时/计数器工作于方式2, 该方式为自动重装初值的8位定时/计数器,寄 存器TH0为8位初值寄存器,保持不变,TL0作 为8位定时/计数器。

当TL0溢出时,由硬件将TF0置1,向CPU发出 中断请求,而溢出脉冲打开TH0和TL0之间的 三态门,将TH0中的初值自动送入TL0。TL0 从初值重新开始加1计数,直至TR0=0才会停 止。 方式2用于定时工作方式,定时时间由下式确 定:

其中,X为计数初值,N为计数个数。从而可 计算出计数初值X:

4.方式3 .方式 当M1M0=11时,定时/计数器工作于方式3。 该方式只适用于定时/计数器T0,此时T0分为2 个独立的8位计数器:TH0和TL0,TL0使用T0 的状态控制位C/T、GATE、TR0、/INT0,而 TH0被固定为1个8位定时器(不能对外部脉冲 计数),并使用定时器T1的控制位TR1和TF1, 同时占用定时器T1的中断请求源TF1。

方式3时,定时器/计数器T0的结构示意图

6.3.4 定时 计数器的综合应用 定时/计数器的综合应用


1)定时/计数器的初始化 对TMOD赋初值,以确定T0和T1的工作方式; 计算定时/计数器初值,并填充定时/计数器(THX 和TLX); 当定时/计数器工作于中断方式时,则进行中断初 始化即对中断允许控制寄存器IE、中断优先级控 制寄存器IP赋初值; 置位TR0或TR1,启动定时/计数器开始定时或计 数。

例6-3-1 假设某80C51应用系统的2个外部中断 源已被占用,现要求增加1个外部中断源,并 控制P1.0引脚输出1个周期为1ms的方波。假 设晶振频率为6MHz。

方式1的应用 例6-3-2 要求:利用定时/计数器(T0)的方式1,产 生一个50Hz的方波,此方波由P1.0引脚输出,假设 晶振频率为12MHz。

/*定义脉冲输出位*/ 1 /*重装计数初值*/ /*脉冲输出位取反*/

方式2的应用 方式2是1个可以自动重装初值的8位定时/计 数器。这种工作方式省去了用户在程序中重 装初值的指令,因此可产生相当精确的定时 时间。 例6-3-4 要求:利用定时/计数器T1的方式2对 外部信号计数。要求每计满200个数,将 P1.0引脚信号取反。

/*定义脉冲输出位*/

/*取反脉冲输出位*/

3.方式3的应用 方式3对T0和T1大不相同。T0工作在方式3时, T1只能工作在方式0、1、2。此时,TL0和 TH0被分成2个独立的8位定时/计数器。其中, TL0可作为8位的定时/计数器;而TH0只能作 为8位定时器。 一般情况下,当定时器T1用作串行口波特率发 生器时,T0才设置为方式3。此时,常把定时 器T1设置为方式2,用作波特率发生器。

门控位GATE的应用――测量 INTX引脚脉冲 宽度 当GATE0=1且TR0=1时,只有INT0引脚输入 高电平时,T1才被允许工作。利用这个特性, 可测量从INT0引脚(P3.2)上输入的正脉冲 的宽度,其方法如图6-23所示。

T0从0开始计数 测量脉冲宽度

图6-23利用GATE位测量正脉冲宽度


6.4.1 串行通信基础 CPU与外部数据的传送称为通信。按照数据的 传送方式,通常有并行和串行两种通信方式, 如图6-24所示

并行通 信 图6-24 两种通信 方式

6.4.3 串行口相关特殊功能寄存器 特殊功能寄存器SCON存放串行口的控制和状 态信息,串行口用定时器T1作为波特率发生器 (发送接受时钟),电源控制寄存器PCON的 最高位SMOD为串行口波特率的倍率控制位, 中断允许控制寄存器IE控制串行通信中断是否 允许。

1.串行口控制寄存器SCON .串行口控制寄存器 串行口的工作方式是由串行口控制寄存器 SCON控制的,其格式如下:

SM0和SM1:用于设置串行接口的工作方式, 2位可选择4种工作方式,如表6- 8所示。

表6-8 串行端口工作方式

2)SM2:方式2和方式3的多级通信控制位。对于方式 2或方式3,如SM2置为1,则接收到的第9位数据 (RB8)为1时置位RI,否则不置位;对于方式1,若 SM2=1,则只有接收到有效的停止位时才会置位RI。 对于方式0,SM2应该为0。 3)REN:允许串行接收位。由软件置位或清零。 REN=1时,串行接口允许接收数据;REN=0时,则 禁止接收。 4)TB8:对于方式2和方式3,是发送数据的第9位。 可用作数据的奇偶校验位,或在多机通信中,作为地 址帧/数据帧的标志位,TB8=0,发送地址帧, TB8=1,发送数据帧。需要有软件置1或清0。

5)RB8:对于方式2和方式3,是接收数据的第9位, 作为奇偶校验位或地址帧/数据帧的标志位。对于方式 1,若SM2=0,则RB8是接收到的停止位。对于方式0, 不使用RB8。 6)TI:发送中断标志位。由硬件在方式0串行发送第 8位结束时置位,或在其他方式串行发送停止位的开 始时置位,向CPU发中断申请。但必须在中断服务程 序中由软件将其清0,取消此中断请求。 7)RI:接收中断标志位。由硬件在方式0接收到第8 位结束时置位,或在其他方式接收到停止位的中间时 置位,向CPU发中断申请。但必须在中断服务程序中 由软件将其清0,取消此中断请求。

2.数据缓冲器SBUF .数据缓冲器 发送缓冲器只管发送数据,51单片机没有专门 的启动发送的指令,发送时,就是CPU写入 SBUF的时候(MOV SBUF,A);接收缓冲器 只管接收数据,接受时,就是CPU读取SBUF 的过程(MOV A,SBUF)。

3.电源控制寄存器PCON .电源控制寄存器


PCON的最高位是串行口波特率系数控制位SMOD,在 串行接口方式1、方式2、方式3时,波特率与SMOD有 关,当SMOD=1时,波特率加倍,否则不加倍。复位时, SMOD=0。PCON的地址为97H,不能位寻址,需要字 节传送。

4.中断允许控制寄存器IE .中断允许控制寄存器

其中,ES为串行通信中断允许位。 ES=0,禁止串行端口中断; ES=1,允许串行端口的接收和发送中断。

6.4.4 串行通信工作方式及波特率的计算


1.方式0 当串行通信控制寄存器SCON的最高两位 SM0SM1=00时,串行口工作在方式0。方式0是 扩展移位寄存器工作方式,常常用于外接移位寄 存器扩展I/O口。此方式下,数据由RXD串行地输 入/输出,TXD为移位脉冲输出端,使外部的移位 寄存器移位。发送和接收都是8位数据为1帧,没 有起始位和停止位,低位在前。

TI(中断标志) 图6-31 方式0输出时序

当执行一条写入SBUF的指令时,就启动了串 行接口的发送过程(如MOV SBUF,A)。串 行口以fosc/12的固定波特率从TXD引脚输出 串行同步时钟,8位同步数据从RXD引脚输出。 8位数据发送完后自动将TI置1,向CPU申请中 断。告诉CPU可以发送下一帧数据,在这之前, 必须在中断服务程序中用软件将TI清0。

2)方式0输入 方式0输入时序如图6-32所示。

当用户在应用程序中,将SCON中的REN位置 1时(同时RI=0),就启动了一次数据接收过 程。数据从外接引脚RXD(P3.0)输入,移位 脉冲从外接引脚TXD(P3.1)输出。8位数据 接收完后,由硬件将输入移位寄存器中的内容 写入SBUF,并自动将RI置1,向CPU申请中 断。CPU响应中断后,用软件将RI清0,同时 读走输入的数据,接着启动串行口接收下一个 数据。


当串行通信控制寄存器SCON的最高两位 SM0SM1=01时,串行口工作在方式1。方式1下, 串行口是波特率可变的10位异步通信接口。TXD 为数据输出线,RXD为数据输入线。传送一帧数 据为10位:1位起始位(0),8位数据位(低位 在先),1位停止位(1)。方式1的波特率发生 器由下式确定: 方式1波特率=(2SMOD/32)×定时器1的溢出率 其中,SMOD是波特率加倍控制位。当SMOD=1 时,串行口的波特率加倍。
当执行一条写入SBUF的指令时,就启动了串行 接口的发送过程。在发送时钟脉冲的作用下,从 TXD引脚先送出起始位(0),然后是8位数据位, 最后是停止位(1)。一帧数据发送完后自动将TI 置1,向CPU申请中断。若要再发送下一帧数据, 必须用软件先将TI清0。

2)方式1接收 当用软件将SCON中的REN位置1时(同时RI=0), 就允许接收器接收。接收器以波特率的16倍速率采样 RXD引脚,当采样到“1”到“0”的负跳变时,即检测 到了有效的起始位,就开始启动接收,将输入的8位 数据逐位移入内部的输入移位寄存器。如果接收不到 起始位,则重新检查RXD引脚是否有负跳变信号。 当RI=0,且SM2=0或接收到的停止位为1时,将接收 到的9位数据的前8位装入接收SBUF,第9位(停止 位)装入RB8,并置位RI,向CPU申请中断。否则接 收的信息将被丢弃。所以编程时要特别注意RI必须在 每次接收完成后将其清0,以准备下一次接收。通常 方式1时,SM2=0。

6.4.6 51单片机串行口的应用 单片机串行口的应用


1.方式0应用,利用串行接口扩展并行口 接口。 .方式 应用 利用串行接口扩展并行口I/O接口 应用, 接口。 编程点亮如图所示的指示灯,使其呈流水灯状态。

图6-38 串 行 接口扩展并行 接口

2.方式1应用,基于方式1的串行通信 .方式 应用,基于方式 的串行通信 应用

}

我要回帖

更多关于 单片机寄存器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信