您好,欢迎来到画鸵萌宠网。
搜索
您的当前位置:首页51系列单片机寄存器详解

51系列单片机寄存器详解

来源:画鸵萌宠网
AUXR:辅助寄存器

字节地址=8EH,不可位寻址 - - - WDIDLE DISRTO - - DISALE WDIDLE:WTD在空闲模式下的禁止/允许位 当WDIDLE=0时,WDT在空闲模式下继续计数 当WDIDLE=1时,WDT在空闲模式下暂停计数 DISRTO:禁止/允许WDT溢出时的复位输出

当DISRTO=0时,WDT定时器溢出时,在RST引脚输出一个高电平脉冲 当DISRT0=1时,RST引脚为输入脚 DISALE :ALE禁止/允许位

当DISALE=0时,ALE有效,发出恒定频率脉冲

当DISALE=1时,ALE仅在CPU执行MOVC和MOVX类指令时有效,不访问外寄存器时,ALE不输出脉冲信号 AUXR1:辅助寄存器1

字节地址=A2H,不可位寻址 - - - - - - - DPS DPS:数据指针寄存器选择位 当DPS=0时,选择数据指针寄存器DPRT0 当DPS=1时,选择数据指针寄存器DPRT PSW:程序状态字

寄存器地址D0H,位寻址D7H~D0H。 位地D7 D6 D5 D4 D3 D2 D1 D0 址 位符CY AC F0 RS1 RS0 OV - P 号 CY——进位标记 AC——半进位标记 F0——用户设定标记

RS1、RS0——4个工作寄存器区的选择位。 VO——溢出标记 P——奇偶校验标记

PCON:电源控制器及波特率选择寄存器 字节地址=87H,不可位寻址 SMOD - - POF GF1 GF0 PD IDL SMOD——波特率倍增位 GF1、GF0——用户通用标记

PD——掉电方式控制位,PD=1时进入掉电模式 IDL——空闲方式控制位,IDL=1时进入空闲方式

在ATS51中PCON.4是电源断电标记位POF,上电是为1 IE:中断允许控制寄存器

寄存器地址A8H,位寻址AFH~A8H。 位地AF AE AD AC AB AA A9 A8 址 位符EA / ET2 ES ET1 EX1 ET0 EX0 号 EA:中断允许总控制位 当EA=0时,中断总禁止。

当EA=1时,中断总允许后中断的禁止与允许由各中断源的中断允许控制位进行设置。

EX0( EX1):外部中断允许控制位 当EX0( EX1)=0 禁止外中断 当EX0( EX1)=1 允许外中断

ET0(EX1):定时/计数中断允许控制位

当ET0(ET1)=0 禁止定时(或计数)中断 当ET0(ET1)=1 允许定时(或计数)中断

ET2:定时器2中断允许控制位,在ATS52、ATC52中 ES:串行中断允许控制位 当ES=0 禁止串行中断 当ES=1 允许串行中断 IP:中断优先级控制寄存器

寄存器地址B8H,位寻址BFH~B8H。 位地BF BE BD BC BB BA B9 B8 址 位符/ / PT2 PS PT1 PX1 PT0 PX0 号 PX0——外部中断0优先级设定位 PT0——定时中断0优先级设定位 PX1——外部中断1优先级设定位 PT1——定时中断1优先级设定位 PS——串口中断优先级设定位

PT2——定时器2优先级设定位

SCON:串行口控制寄存器

寄存器地址98H,位寻址9FH~98H。 位地址 9F 9E 9D 9C 9B 9A 99 98 位符号 SM0 SM1 SM2 REN TB8 RB8 TI RI SM0、SM1:串行口工作方式选择位 SM2:多机通信控制位

REN:允许/禁止串行口接收的控制位

TB8:在方式2和方式3中,是被发送的第9位数据,可根据需要由软件置1或清零,

也可以作为奇偶校验位,在方式1中是停止位。

RB8:在方式2和方式3中,是被接收的第9位数据(来自第TB8位);在方式1中,

RB8收到的是停止位,在方式0中不用。 TI——串行口发送中断请求标志位

当发送完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。 RI——串行口接收中断请求标志位

当接收完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。

T2CON:定时器控制寄存器

寄存器地址0C8H,位寻址0C8H~0CFH。 位地CF CE CD CC CB CA C9 C8 址 位符TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 号 TF2:T2溢出标记 当T2溢出时TF2=1,TD2只能用软件清除 当RCLK=1或TCLK=1时,TF2将不置位 EXF2:T2外部标记 当EXEN2=1时,T2EX/P1.1引脚上的负跳变引起T2的捕捉/重装操作,此时EXF2=1。在T2中断允许时,EXF2=1将引起中断,EXF2只能用软件清除。在T2的向上、向下计数模式下(DCEN=1)EXF2的置位将不引起中断。 RCLK:接收时钟允许 当RCLK=1时,T2的溢出脉冲可用作串行口的接收时钟信号,适于串行口模式1、3当RCLK=0时,T1的溢出脉冲用作串行口接收时钟信号 TCLK:发送时钟允许

EXEN2:T2外部事件(引起捕捉/重装的外部信号)允许 当EXEN2=1时,如果T2没有作串行时钟输出(即RCLK+TCLK=0),则在T2EX/P1.1引脚跳变将引起T2的捕捉/重装操作;

当EXEN2=0时,在T2EX引脚的负跳变将不起作用 TR2:T2的启动/停止控制 C/T2:计数定时

CP/RL2:捕捉/重装选择

当CP/RL2=1且EXEN2=1时,T2EX/P1.1引脚的负跳变将引起捕捉操作 当CP/RL2=0且EXEN2=1时,T2EX/P1.1引脚的负跳变将引起重装操作 当CP/RL2=0且EXEN2=0时,T2的溢出将引起T2的自动重装操作

当RCLK+TCLK=1时,CP/RL2控制位不起作用,T2被强制工作于重装方式。重装方式发生于T2溢出时,常用来作波特率发生器。 TMOD:工作方式控制寄存器 寄存器地址H,不可位寻址。 位序 B7 B6 B5 B4 B3 B2 B1 B0 位符GATE C/T M1 M0 GATE C/T M1 M0 号 GATE——门控位 当=0时,以TR0(或TR1)状态决定定时器/计数器的启动或禁止

当=1时,以TR0与INT0(或TR1与INT1)状态决定定时器/计数器的启动或禁止

C/T=0 定时/计数工作方式选择位 0为定时器 1为计数器。 M1M0——工作方式选择位

M1M0=00 方式0:是13位计数结构的工作方式,其计数器由TH全部8位和TL的低5位构成。

M1M0=01 方式1:是16位计数结构的工作方式,计数器由TH全部8位和TL全部8位构成。

M1M0=10 方式2:自动装入8位计数器。

M1M0=11 方式3:定时器/计数器0被拆成两个的8位计数器TL0和TH0。其中TL0既可以计数使用,又可以定时使用,定时器/计数器0的各控制位和引脚信号全归它使用。

T2MOD:工作方式控制寄存器 寄存器地址0C9H,不可位寻址 - - - - - - T2OE DCEN T2OE:定时器2输出允许位,当=1时,P1.0/T2引脚输出连续脉冲信号 DCEN:当=1时,T2配置成向上向下计数器 P3口的代替功能

寄存器地址B0H,位寻址B7H~B0H。 引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 代替功能 RXD TXD /INT0 /INT1 T0 T1 /WR /RD TCON:定时器控制寄存器 寄存器地址88H,位寻址8FH~88H。 位地8F 8E 8D 8C 8B 8A 88 址 位符TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 号 TF0(TF1)——计数溢出标志位,当计数器计数溢出时,该位置1。 TR0(TR1)——定时器运行控制位

当TR0(TR1)=0 停止定时器/计数器工作 当TR0(TR1)=1 启动定时器/计数器工作 IE0(IE1)——外中断请求标志位

当CPU采样到P3.2(P3.3)出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。 IT0(IT1)——外中断请求信号方式控制位 当IT0(IT1)=1 脉冲方式(后沿负跳有效)

当IT0(IT1)=0 电平方式(低电平有效)此位由软件置1或清0。 TF0(TF1)——计数溢出标志位

当计数器产生计数溢出时,此位由硬件置1。当转向中断服务时,再有硬件自动清0。计数溢出的标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。

一、10MS定时器初值的计算: 1.晶振12M

12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次 机器周期。

65536-10000=55536(d8f0) TH0=0xd8,TL0=0xf0 2.晶振11.0592M

11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。

65536-9216=56320(dc00) TH0=0xdc,TL0=0×00 二、50MS定时器初值的计算: 1.晶振12M

12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次 机器周期。

65536-50000=15536(3cb0) TH0=0×3c,TL0=0xb0 2.晶振11.0592M

11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。

65536-46080=19456(4c00) TH0=0×4c,TL0=0×00 三、使用说明

以12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。而T 每次溢出

最多65536 个机器周期。我们尽量应该让溢出中断的次数最少(如50ms),这样对主程序的干扰也就最小。 有关中断的概念

仔细研什么叫中断?

举例:同学正在教室写作业,忽然被人叫出去,回来后,继续写作业这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。 引入计算机中断的概念。 中断的作用:

处理断电保存,解决快速CPU与慢速外设之间的矛盾等。

对MCS-51单片机的中断系统用一句话讲叫:“五源中断,两级管理” 中断请求源(五源中断)

五个中断源:

外部中断0(/INT0) 0003H

T0溢出中断 000BH 外部中断1(/INT1) 0013H

T1溢出中断 001BH 串口中断 入口地址 0023H 有了中断请求,如何通知CPU? 通过中断请求标志位来通知CPU。

研究一下生活中的中断,对于我们学习单片机的中断也很有好处。

第一、什么可以引起中断,生活中很多事件可以引起中断:有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了….等等诸如此类的事件,我们把可以引起中断的称之为中断源,单片机中也有一些可以引起中断的事件,8031中一共有5个:两个外部中断,两个计数/定时器中断,一个串行口中断。 第二、中断的嵌套与优先级处理:设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了情况。考虑一下我们会怎么办吧。

第三、中断的响应过程:当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书):电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的。计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步骤:

1、保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。

2、寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)。 3、执行中断处理程序。

4、中断返回:执行完中断指令后,就从中断处返回到主程序,继续执行。 究竟单片机是怎么样找到中断程序所在位置,又怎么返回的呢?我们稍后再谈。 MCS-51中断系统的结构:

8031单片机的中断系统简单实用,其基本特点是:有5个固定的可屏蔽中断源,3个在片内,2个在片外,它们在程序存储器中各有固定的中断入口地址,由此进入中断服务程序;5个中断源有两级中断优先级,可形成中断嵌套;2个特殊功能寄存器用于中断控制和条件设置的 编程。

中断系统的结构:

5个中断源的符号、名称及产生的条件如下。

INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。 T1:定时器/计数器l中断,由T1计满回零引起。

TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。 整个中断系统的结构框图见下图一所示。

由图一可见,外部中断有下跳沿引起和低电平引起的选择;串行中断有发送(TI)相接收(R1)的区别;各个中断源打开与否,受中断自身的允许位和全局允许位的控制,并具有高优先级和低优先级的选择。 中断请求源:

(1)外部中断请求源:即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。在内部的TCON中有四位是与外中断有关的。

IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。这两种方式的差异将在以后再谈。

IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。 IT1、IE1的用途和IT0、IE0相同。 (2)内部中断请求源

TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。 TF1:与TF0类似。

TI、RI:串行口发送、接收中断,在串口中再讲解。 中断系统的控制寄存器: 中断允许寄存器IE

中断屏蔽

在中断源与CPU之间有一级控制,类似开关,其中第一级为一个总开关,第二级为五个分开关,由IE控制。 在MCS-51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。见下表

其中EA是总开关,如果它等于0,则所有中断都不允许。 ES-串行口中断允许 ET1-定时器1中断允许 EX1-外中断1中断允许。 ET0-定时器0中断允许 EX0-外中断0中断允许。

如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE可以是

即8CH,当然,我们也可以用位操作指令 SETB EA SETB ET1 SETB EX1 来实现它。

中断优先级寄存器IP

中断优先原则:(概括为四句话) 1、低级不打断高级 2、高级不睬低级 3、同级不能打断

4、同级、同时中断,事先约定。

为什么要有中断优先级?

CPU同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有后。为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。

在MCS-中断优先级中由中断优先级寄存器IP来高置的,IP中某位设为1,相应的中断就是高优先级,否则就是低优先级。

IP优先级别寄存器各位介绍如下:

PS:串行口中断优先级控制位。PS=1设定串行口为高优先级中断;PS=0为低优先级中断。

PT1:T1中断优先级控制位。PT1=1设定定时器T1为高优先级中断;PT1=0为低优先级中断。

PX1:外部中断1优先级控制位。PX1=1设定定时器外部中断1为高优先级中断;PX1=0为低优先级中断。

PT0:T0中断优先级控制位。PT0=1设定定时器T0为高优先级中断;PT0=0为低优先级中断。

PX0:外部中断0优先级控制位。PX0=1设定定时器外部中断0为高优先级中断;PX0=0为低优先级中断。

例:设有如下要求,将T0、外中断1设为高优先级,其它为低优先级,求IP的值。

IP的首3位没用,可任意取值,设为000,后面根据要求写就可以了

因此,最终,IP的值就是06H。

例:在上例中,如果5个中断请求同时发生,求中断响应的次序。

响应次序为:定时器0->外中断1->外中断0->定时器1->串行中断。 五个中断源的自然优先级与中断服务入口地址 外中断0:0003H 定时器0:000BH 外中断1:0013H 定时器1:001BH 串口 :0023H

它们的自然优先级由高到低排列。写到这里,大家应当明白,为什么前面有一些程序一始我们这样写: orG 0000H LJMP START orG 0030H

START:

这样写的目的,就是为了让出中断源所占用的向量地址。当然,在程序中没用中断时,直接从0000H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。

优先级:单片机采用了自然优先级和人工设置高、低优先级的策略,即可以由程序员设定那些中断是高优先级、哪些中断是低优先级,由于只有两级,必有一些中断处于同一级别,处于同一级别的,就由自然优先级确定。 MCS-51的中断响应过程:

中断响应的条件: 讲到这儿,我们依然对于计算机响应中断感到神奇,我们人可以响应外界的事件,是因为我们有多种“传感器“――眼、耳可以接受不同的信息,计算机是如何做到这点的呢?其实说穿了,一点都不希奇,MCS51工作时,在每个机器周期中都会去查询一下各个中断标记,看他们是否是“1“,如果是1,就说明有中断请求了,所以所谓中断,其实也是查询,不过是每个周期都查一下而已。这要换成人来说,就相当于你在看书的时候,每一秒钟都会抬起头来看一看,查问一下,是不是有人按门铃,是否有电话。。。。很蠢,不是吗?可计算机本来就是这样,它根本没人聪明。

了解了上述中断的过程,就不难解中断响应的条件了。在下列三种情况之一时,CPU将封锁对中断的响应:

1、CPU正在处理一个同级或更高级别的中断请求。

2、现行的机器周期不是当前正执行指令的最后一个周期。我们知道,单片机有单周期、双周期、三周期指令,当前执行指令是单字节没有关系,如果是双字节或四字节的,就要等整条指令都执行完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)。

3、当前正执行的指令是返回批令(RETI)或访问IP、IE寄存器的指令,则CPU至少再执行一条指令才应中断。这些都是与中断有关的,如果正访问IP、IE则可能会开、关中断或改变中断的优先级,而中断返回指令则说明本次中断还没有处理完,所以都要等本指令处理结束,再执行一条指令才可以响应中断。 中断响应过程

CPU每个机器周期都需要顺序检查每个中断源,当检测到有中断请求时,能否响应,还要看下述情况是否存在:

(1)CPU正处理相同级别或更高级别的中断; (2)正在执行指令,还未到最后一个机器周期;

(3)正在执行的指令是RETI或访问IP、IE指令,则执行完上述指令后,再执行一条指令后,才会响应新中断。CPU响应中断时,首先把当前指令的下一条指

令(就是中断返回后将要执行的指令)的地址送入堆栈,然后根据中断标记,将相应的中断入口地址送入PC,PC是程序指针,CPU取指令就根据PC中的值,PC中是什么值,就会到什么地方去取指令,所以程序就会转到中断入口处继续执行。这些工作都是由硬件来完成的,不必我们去考虑。这里还有个问题,大家是否注意到,每个中断向量地址只间隔了8个单元,如0003-000B,在如此少的空间中如何完成中断程序呢?很简单,你在中断处安排一个LJMP指令,不就可以把中断程序跳转到任何地方了吗?

响应过程:(假设已使某中断请求标志置1) (1)先使相应优先级状态触发器置1; (2)执行一个硬件子程序的调用,

1)硬件清零相应中断请求标志(TI、RI除外) 2)将当前PC内容压入堆栈——保护断点; 3)将中断服务子程序入口地址送PC——转移。

返回过程:(RETI执行后)

(1)使相应优先级状态触发器清0。

(2)从堆栈中弹出栈顶的两个字节内容送PC——恢复断点。 (3)CPU接着中断处继续执行原程序。

注意:

1)保护断点与保护现场以及恢复断点与恢复现场的区别。 2)外部中断响应时间在3 ~ 8个机器周期之间。 利用外部中断实现单步操作。

一个完整的主程序看起来应该是这样的: orG 0000H

LJMP START orG 0003H

LJMP INT0 ;转外中断0 orG 000BH

RETI ;没有用定时器0中断,在此放一条RETI,万一 “不小心“产生了中断,也不会有太大的后果。

中断程序完成后,一定要执行一条RETI指令,执行这条指令后,CPU将会把堆栈中保存着的地址取出,送回PC,那么程序就会从主程序的中断处继续往下执行了。注意:CPU所做的保护工作是很有限的,只保护了一个地址,而其它的所有东西都不保护,所以如果你在主程序中用到了如A、PSW等,在中断程序中又

要用它们,还要保证回到主程序后这里面的数据还是没执行中断以前的数据,就得自己保护起来。

开机时,每个中断都处于低优先级,我们可以用指令对优先级进行设置。

由于EMC所面临解决问题大多是共模干扰,因此共模电感也是我们常用的有力元件之一!以下是共模电感的原理以及使用情况。

共模电感是一个以铁氧体为磁芯的共模干扰抑制器件,它由两个尺寸相同,匝数相同的线圈对称地绕制在同一个铁氧体环形磁芯上,形成一个四端器件,要对于共模信号呈现出大电感具有抑制作用,而对于差模信号呈现出很小的漏电感几乎不起作用。原理是流过共模电流时磁环中的磁通相互叠加,从而具有相当大的电感量,对共模电流起到抑制作用,而当两线圈流过差模电流时,磁环中的磁通相互抵消,几乎没有电感量,所以差模电流可以无衰减地通过。因此共模电感在平衡线路中能有效地抑制共模干扰信号,而对线路正常传输的差模信号无影响。

共模电感在制作时应满足以下要求:

1)绕制在线圈磁芯上的导线要相互绝缘,以保证在瞬时过电压作用下线圈的匝间不发生击穿短路。

2)当线圈流过瞬时大电流时,磁芯不要出现饱和。

3)线圈中的磁芯应与线圈绝缘,以防止在瞬时过电压作用下两者之间发生击穿。

4)线圈应尽可能绕制单层,这样做可减小线圈的寄生电容,增强线圈对瞬时过电压的而授能力。

通常情况下,同时注意选择所需滤波的频段,共模阻抗越大越好,因此我们在选择共模电感时需要看器件资料,主要根据阻抗频率曲线选择。另外选择时注意考虑差模阻抗对信号的影响,主要关注差模阻抗,特别注意高速端口。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo8.com 版权所有 湘ICP备2023022238号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务