51单片机中的PCON寄存器
- 格式:doc
- 大小:12.00 KB
- 文档页数:1
51单片机寄存器详解符号地址功能介绍B F0H B寄存器ACC E0H 累加器PSW D0H 程序状态字IP B8H 中断优先级控制寄存器P3 B0H P3口锁存器IE A8H 中断允许控制寄存器P2 A0H P2口锁存器SBUF 99H 串行口锁存器SCON 98H 串行口控制寄存器P1 90H P1口锁存器TH1 8DH 定时器/计数器1(高8位)TH0 8CH 定时器/计数器1(低8位)TL1 8BH 定时器/计数器0(高8位)TL0 8AH 定时器/计数器0(低8位)TMOD 89H 定时器/计数器方式控制寄存器TCON 88H 定时器/计数器控制寄存器DPH 83H 数据地址指针(高8位)DPL 82H 数据地址指针(低8位)SP 81H 堆栈指针P0 80H P0口锁存器PCON 87H 电源控制寄存器PSW_7PSW_6PSW_5PSW_4PSW_3PSW_2PSW_1PSW_0 CY AC F0 RS1 RS0 OV USR P 状态寄存器:PSWCY 进位标志位AC 辅助进位标志位F0 通用标志位RS1 寄存器组选择位高位RS0 寄存器组选择位低位OV 溢出标志位USR 用户定义标志位P 奇偶标志位PCON_7PCON_6PCON_5PCON_4PCON_3PCON_2PCON_1PCON_0 SMOD - - - GF1 GF0 PDWN IDLE 电源控制寄存器:PCONSMOD 串行口通信波特率控制位置位使波特率翻倍- 保留- 保留- 保留GF1 通用标志位GF0 通用标志位PDWN 低功耗标志位置位进入低功耗模式IDLE 空闲标志位置位进入空闲模式IP_7IP_6IP_5IP_4IP_3IP_2IP_1IP_0- - PT2 PS PT1 PX1 PT0PX0中断优先级寄存器:IP- 保留- 保留PT2 定时器2 中断优先级PS 串行通信中断优先级PT1 定时器1 中断优先级PX1 外部中断1 优先级PT0 定时器0 中断优先级PX0 外部中断0 优先级处理器的状态保存在状态寄存器PSW 中,状态字中包括进位位,用于BCD 码处理的辅助进位位,奇偶标志位,溢出标志位,还有前面提到的用于寄存器组选择的RS0 和RS1。
MCS-51单片机的特殊功能寄存器从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在一个51单片机的内部包含了这么多的东西。
对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O 口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看下表下面,我们介绍一下几个常用的SFR。
1、ACC---是累加器,通常用A表示。
这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。
该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器。
在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3指针寄存器(1)程序计数器PC指明即将执行的下一条指令的地址,16位,寻址64KB范围,复位时PC = 0000H(2)堆栈指针SP指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H(3)数据指针DPTR@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。
DPTR = DPH + DPL。
可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。
分成DPL(低8位)和DPH(高8位)两个寄存器。
用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作4、PSW-----程序状态字。
c51单片机串口初值计算
单片机串口的初值计算是为了设置串口通信的波特率(Baud Rate),波特率是指串口每秒传输的位数。
在51单片机中,串口模块由SBUF(串口数据寄存器)、SCON(串口
控制寄存器)和PCON(功耗控制寄存器)组成。
串口通信的波特率设置
是通过控制SCON和PCON寄存器的相关位实现的。
以下是一种计算波特率初值的方法:
1.确定所需的波特率,例如1200。
2.计算定时器T1的初值:
其中,CPU时钟频率是指单片机的工作频率,如12MHz。
3.将T1的高8位和低8位分别存储到TH1寄存器和TL1寄存器中:
TH1=T1高8位
TL1=T1低8位
4.设置串口模式和波特率控制位:
SCON=SCON,0x50;//设置串口工作在模式1(8位数据,可变波特率)PCON=PCON,0x80;//设置波特率控制位,使能T1控制波特率
5.启动定时器T1:
TR1=1;//启动定时器T1
通过以上步骤,就可以计算并设置51单片机串口的波特率初值。
需要注意的是,由于计算初值时取整会导致一定的误差,因此实际波特率可能会略有偏差。
51系列的串口波特率的计算
1、方式0的波特率,固定为晶振频率的十二分之一。
2、方式2的波特率,取决于PCON寄存器的SMOD位。
PCON是一个特殊的寄存器,除了最高位SMOD外,其他位都是虚设的。
计算方法如下:
SMOD=0时,波特率为晶振频率的1/64;
SMOD=1时,为晶振频率的1/32。
3、方式1与方式3的波特率,都由定时器的溢出率决定。
公式为:
波特率= (2SMOD/ 32)×(定时器T1的溢出率)通常情况下,我们使用定时器的工作方式2,即比率发生器,自动重载计数常数.
溢出的周期为:
T=(256-X)×12/fosc
溢出率为溢出周期的倒数,所以:
如此,也可由波特率反推出计数器的初始值。
下面是常用的波特率及初始值:
51单片机模拟串口波特率计算方法
1.计算波特率位间隔时间(即定时时间,其实就是波特率的倒数)位间隔时间(us) = 106 (us) / 波特率(bps)2.计算单片机指令周期:
指令周期(us) = 12 / 晶振频率(Mhz)
3.计算定时器初值:
需要指令周期个数 = 位间隔时间(us) / 指令周期(us)
定时器初值 = 2n—需要指令周期个数
n为定时器位数。
51单片机特殊功能寄存器一、中断控制寄存器IE功能解释:1、EA:中断总开关,如果它等于0,则所有中断不允许。
2、X:无效位;3、ET2:定时器2中断允许;4、ES:串行口中断允许;5、ET1:定时器1中断允许;6、EX1:外部中断1中断允许;7、ET0:定时器0中断允许;8、EX0:外部中断0中断允许;二、中断标志及外部中断方式选择寄存器TCON功能解释1、TF1:定时器/计数器1(T1)的溢出中断标志。
当T1从初值开始加1计数到计数满,产生溢出时,由硬件使TF1置“1”,直到CPU响应中断时有硬件复位;2、TR1:T1的运行控制位,该位置1或清0用来实现启东计数或停止计数;3、TF0:定时器/计数器0(T0)的溢出标志位,其作用同TF1;4、TR0:T0的运行控制位,该位置1或清0用来实现启东计数或停止计数;5、IE1:外部中断1中断请求标志位,如果IT1 = 1,则外部中断1引脚P3.1上的电平有1变0时,IE1由硬件置位,外部中断1请求中断。
在CPU响应该中断时由硬件清0;6、IT1:外部中断源1触发方式控制位,边沿/电平触发模式。
7、IE0:外部中断0中断请求标志位,功能同IE1;8、IT0:外部中断源0触发方式控制位,边沿/电平触发模式。
三、定时器方式控制寄存器TMOD高4位(D7-D4)用于定时器1,低四位(D3-D0)用于定时器0;1、Gate:定时器/计数器运行控制位,用来确定外部中断请求引脚(INT0,INT1)是否参与T0或T1的操作控制。
当Gate=0时,只要定时器控制寄存器TCON中的TR0(或TR1)被置1时,T0(或T1)被允许开始计数;当Gate=1时,不仅要TCON中的TR0或TR1置位,还需要P3口的P3.2或P3.3引脚为高电平,才允许计数;2、C/T:定时器方式或计数器方式选择位。
C/T = 1时,为计数器方式;C/T = 0时为定时器模式。
3、M1,M0:定时器四种工作方式选择位:4、四、UART控制寄存器SCON功能解释:1、SMO,SM1:串行口操作方式选择位,两个选择位对应四种状态。
MCS-51单片机的特殊功能寄存器从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在一个51单片机的内部包含了这么多的东西。
对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O 口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看下表下面,我们介绍一下几个常用的SFR。
1、ACC---是累加器,通常用A表示。
这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。
该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器。
在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3指针寄存器(1)程序计数器PC指明即将执行的下一条指令的地址,16位,寻址64KB范围,复位时PC = 0000H(2)堆栈指针SP指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H(3)数据指针DPTR@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。
DPTR = DPH + DPL。
可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。
分成DPL(低8位)和DPH(高8位)两个寄存器。
用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作4、PSW-----程序状态字。
21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A ≠0则z=0。
该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW-----程序状态字。
这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。
它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。
8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。
这样就没事了。
有进、借位,CY=1;无进、借位,CY=0例:78H+97H(01111000+10010111)AC:辅助进、借位(高半字节与低半字节间的进、借位)。
51单片机空闲和掉电模式应用我们知道单片机内部有一个电源管理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位分别用来设定是否使单片机进入空闲模式和掉电模式。
1. 空闲模式当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。
但假若定时器正在运行,那么计数器寄存器中的值还将会增加。
单片机在空闲模式下可由任一个中断或硬件复位唤醒,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
让单片机进入空闲模式的目的通常是为了降低系统的功耗,举个很简单的例子,大家都用过数字万用表,在正常使用的时候表内部的单片机处于正常工作模式,当不用时,又忘记了关掉万用表的电源,大多数表在等待数分钟后,若没有人为操作,它便会自动将液晶显示关闭,以降低系统功耗,通常类似这种功能的实现就是使用了单片机的空闲模式或是掉电模式。
以STC89系列单片机为例,当单片机正常工作时的功耗通常为4mA~7mA,进入空闲模式时其功耗降至2mA,当进入掉电模式时功耗可降至0.1μA以下。
2. 休眠模式当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。
使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。
可由外部中断低电平触发或由下降沿触发中断或者硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
【例】:开启两个外部中断,设置低电平触发中断,用定时器计数并且显示在数码管的前两位,当计到5时,使单片机进入空闲(休眠)模式,同时关闭定时器,当单片机响应外部中断后,从空闲(休眠)模式返回,同时开启定时器。
51单片机中的21个寄存器
ACC 累加器B 用于辅助累加器做某些运算的寄存器
PSW 程序状态字其中最高位是进/借位标志C;PSW.6 是辅助进位标志AC,用于标识加减运算中低四位向高四位的进位;PSW.4 和PSW.3 是寄存器组选择位RS1 和RS0,用于从00H--1FH 的32 个存储器单元(4 组)中选出当前准备使用的一组工作寄存器的映射地址;PSW.2 是溢出标志OV;PSW.0 是ACC 的偶校验位P;PSW 的其余位不用
IP 中断优先级控制寄存器在51 中IP.0--IP.4 依次控制INT0、T0、INT1、T1、UART 中断的优先级,高三位不用
IE 中断使能控制器IE.7 是所有中断的总开关EA,IE.0--IE.4 依次控制INT0、T0、INT1、T1、UART 中断功能的开放或关断
P0、P1、P2、P3 这四个寄存器用于读写51 单片机的四个I/O 端口
SBUF 串行数据缓冲器将数据写入SBUF,单片机就自动将数据从UART 口发送出去
SCON 串行口功能控制器最高两位SM0、SM1 控制串行口工作模式;第5 位SM2 通常用于多机通信中区分地址帧和数据帧;第4 位REN 是控制串口接收数据的使能位;第3 位TB8 和第2 位RB8 分别是在串口的相关工作模式下要发送的和接收到的第9 位数据;次低位TI 和最低位RI 分别标识一个发送或接收过程已结束,这两个标志位都会触发串口中断
TH0、TL0 定时器T0 的计数单元的高8 位和低8 位
TH1、TL1 定时器T1 的计数单元的高8 位和低8 位
TMOD 定时/计数器工作模式控制器低4 位和高4 位的内容对应相同,分别控制T0 和T1 的工作模式,次低位和最低位控制对应定时/计数器的工作模式;。
51单片机串口通信相关寄存器及设置指引关键字SBUF:串口数据缓存寄存器SCON:串口通信状态控制寄存器Fosc:晶振的震荡频率PSW:程序状态字寄存器1、SBUF数据缓存寄存器SBUF可直接寻址专用寄存器,是个8位寄存器,不可进行位操作。
字节地址99H。
物理上它是两个寄存器,一个发送寄存器,一个接收寄存器。
写数据到SBUF中时(SBUF = 0x52;),单片机自己会判断是写到发送寄存器。
读取SBUF中数据时(rReg = SBUF;),单片机自己会判断是读取接收寄存器。
接收寄存器是双缓冲的,以避免在接收下一帧数据之前,单片机还来不及响应接收中断,没有把上一帧的数据读取走,而产生两次帧数据重叠问题。
发送寄存器,没有缓冲,发送时单片机直接主动发出数据,不会产生重叠问题。
(扩展知识:为了保持最大的传输速率,一般不需要发送寄存器建立双缓冲功能。
双缓冲功能有别于发送数据队列缓存区。
)2、SCON串口通讯状态控制寄存器SCON可直接寻址专用寄存器,是个8位寄存器,可以进行位操作。
SCON用于控制串行通信的模式选择、接收和发送,标识串口的状态。
SCON即可以字节寻址也可以位寻址,字节地址98H,地址位为98H~9FH。
系统复位时,SCON的所有位都被清除。
SCON串口通讯状态控制寄存器的格式及各位的功能定义如下:●SM0、SM1SM0和SM1是串口模式选择位。
SM0和SM1编码对应串口4种模式,如下表:●SM2SM2在模式2和模式3中是多机通信的使能位。
在模式0中,SM2必须为0。
在模式1中,若SM2=1且没有接收到有效的停止位,则接收中断标志位RI不会被激活。
在模式2和模式3中若SM2=1且接收到的第9位数据(RB8)为0,则接收中断标志RB8不会被激活,若接收到的第9位数据(RB8)为1,则RI置位。
此功能可用于多处理机通信。
●RENREN为允许串行接收位,由软件置位或清除。
置位时允许串行接收,清除时禁止串行接收。
51单片机特殊功能寄存器一:IE(中断允许控制寄存器):IE(字节地址:A8H)寄存器格式:D7D6D5D4D3D2D1D0 IE EA X ET2ES ET1EX1ET0EX0位地址AFH ADH ACH ABH AAH A9H A8HIE各位功能说明:EA(IE.7)中断允许总控制位X(IE.6)保留位ET2(IE.5)定时器/计数器T2中断响应控制位ES(IE.4)串口中断响应控制位ET1(IE.3)定时器/计数器T1中断响应控制位EX1(IE.2)外部中断INT1中断响应控制位ET0(IE.1)定时器/计数器T0中断响应控制位EX0(IE.0)外部中断INT0中断响应控制位中断优先级控制(1为高级;0为低级)默认顺序:INT0T0INT1T1Ri Ti中断号n中断源中断向量8n+3 0外部中断0(INT0)0003H1定时器0(T0)000BH2外部中断1(INT1)0013H3定时器1(T1)001BH4串行口(Ri、Ti)0023H二:TMOD(定时器方式控制寄存器):TMOD(字节地址:89H,不可位寻址)寄存器格式:定时器/计数器1定时器/计数器0D7D6D5D4D3D2D1D0 TMOD GATE C/T M1M0GATE C/T M1M0三:TCON(定时器控制)TCON (字节地址:88H )寄存器格式:D7D6D5D4D3D2D1D0TCON TF1TR1TF0TR TR00IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H四:SCON(串口控制寄存器)SCON(字节地址:98H)寄存器格式:D7D6D5D4D3D2D1D0 SCON SM0SM1SM2REN TB8RB8TI RI 位地址9FH9EH9DH9CH9BH9AH99H98HSCON各位功能说明:SM0、SM1确定串行通信的工作方式SM0SM1工作方式功能说明波特率00方式0移位寄存器方式Fosc/1201方式18位UART方式可变10方式29位UART方式Fosc/64或Fosc/3211方式39位UART方式可变SM2方式0时,应置0。
51单片机引脚图及引脚功能介绍首先我们来介绍一下单片机的引脚图及引脚功能(如下图所示),引脚的具体功能将在下面详细介绍单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O 引脚。
⒈ 电源:⑴ VCC - 芯片电源,接+5V;⑵ VSS - 接地端;⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
⒊ 控制线:控制线共有4根,⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲① ALE功能:用来锁存P0口送出的低8位地址② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵ PSEN:外ROM读选通信号。
⑶ RST/VPD:复位/备用电源。
① RST(Reset)功能:复位信号输入端。
② VPD功能:在Vcc掉电情况下,接备用电源。
⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。
① EA功能:内外ROM选择端。
② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋ I/O线51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
拿到一块单片机,想要使用它,首先必须要知道怎样去连线,我们用的一块51的芯片为例,我们就看一下如何给它连线。
1、电源:这当然是必不可少的了。
单片机使用的是5V电源,其xx正极接40管脚,负极(地)接20管脚。
2、振蒎电路:单片机是一种时序电路,必须供给脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。
只要买来晶体震荡器,电容,连上就能了,按图1接上即可。
3、复位管脚:按图1xx画法连好,至于复位是何含义及为何需要复要复位,在单片机功能xx介绍。
4、 EA管脚:EA管脚接到正电源端。
至此,一个单片机就接好,通上电,单片机就开始工作了。
我们的第一个任务是要用单片机点亮一只发光二极管LED,显然,这个LED必须要和单片机的某个管脚相连,不然单片机就没法控制它了,那么和哪个管脚相连呢?单片机上除了刚才用掉的5个管脚,还有35个,我们将这个LED和1脚相连。
(1)SM0、SM1:串行口工作方式控制位。
SM0,SM1 工作方式00 方式0-波特率由振荡器频率所定:振荡器频率/1201 方式1-波特率由定时器T1或T2的溢出率和SMOD所定:2SMOD ×(T1溢出率)/3210 方式2-波特率由振荡器频率和SMOD所定:2SMOD ×振荡器频率/6411 方式3-波特率由定时器T1或T2的溢出率和SMOD所定:2SMOD ×(T1溢出率)/32(2)SM2:多机通信控制位。
< br> 多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。
接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。
当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。
工作于方式0时,SM2必须为0。
(3)REN:允许接收位。
< br> REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。
(4)TB8:发送接收数据位8。
< br> 在方式2和方式3中,TB8是要发送的——即第9位数据位。
在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
(5)RB8:接收数据位8。
在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
(6)TI:发送中断标志位。
可寻址标志位。
方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。
(7)RI:接收中断标志位。
可寻址标志位。
接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。
11、PCON-----电源管理寄存器PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如下:。
51单片机空闲和掉电模式应用我们知道单片机内部有一个电源管理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位分别用来设定是否使单片机进入空闲模式和掉电模式。
1. 空闲模式当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。
但假若定时器正在运行,那么计数器寄存器中的值还将会增加。
单片机在空闲模式下可由任一个中断或硬件复位唤醒,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
让单片机进入空闲模式的目的通常是为了降低系统的功耗,举个很简单的例子,大家都用过数字万用表,在正常使用的时候表内部的单片机处于正常工作模式,当不用时,又忘记了关掉万用表的电源,大多数表在等待数分钟后,若没有人为操作,它便会自动将液晶显示关闭,以降低系统功耗,通常类似这种功能的实现就是使用了单片机的空闲模式或是掉电模式。
以STC89系列单片机为例,当单片机正常工作时的功耗通常为4mA~7mA,进入空闲模式时其功耗降至2mA,当进入掉电模式时功耗可降至0.1μA以下。
2. 休眠-掉电模式当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。
使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。
可由外部中断低电平触发或由下降沿触发中断或者硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
【例】:开启两个外部中断,设置低电平触发中断,用定时器计数并且显示在数码管的前两位,当计到5时,使单片机进入空闲(休眠)模式,同时关闭定时器,当单片机响应外部中断后,从空闲(休眠)模式返回,同时开启定时器。
51单片机对控制寄存器的赋值方法51单片机是一种广泛应用于嵌入式系统中的微控制器。
在进行控制操作时,我们需要对其内部的控制寄存器进行赋值,以实现相应的功能。
本文将介绍51单片机对控制寄存器的赋值方法,帮助读者更好地理解并应用于实际开发中。
一、概述控制寄存器是51单片机内部的一种特殊寄存器,用于控制单片机的工作模式、功能和特性。
通过对控制寄存器的赋值,我们可以设置单片机的时钟源、中断使能、IO口状态、定时器模式等各种功能。
掌握对控制寄存器的赋值方法,对于实现所需的功能至关重要。
二、寄存器的赋值方法1. 寄存器的地址在对控制寄存器进行赋值之前,首先需要知道寄存器的地址。
51单片机的控制寄存器地址范围为0x80~0xFF,不同的寄存器对应不同的功能。
可以通过查阅相关资料或者单片机的数据手册来获取寄存器的地址。
2. 寄存器位的定义控制寄存器中的每一位都代表着不同的功能或状态。
在对寄存器进行赋值时,需要清楚每个位的含义。
可以通过查阅单片机的数据手册或者相关资料来获取寄存器位的定义。
3. 赋值方法控制寄存器的赋值方法主要通过对寄存器的位进行赋值。
可以使用位操作指令来实现对寄存器位的操作。
常用的位操作指令有与(AND)、或(OR)、非(NOT)等。
通过这些指令,我们可以将特定的位设置为1或者清零,以实现相应的功能。
三、示例以控制P0口为例,介绍51单片机对控制寄存器的赋值方法。
1. 获取控制寄存器的地址P0口的控制寄存器地址为0x80。
2. 定义寄存器位的含义P0口的控制寄存器P0CON中,各位的含义如下:- P0.0:P0口第0位- P0.1:P0口第1位- P0.2:P0口第2位- P0.3:P0口第3位- P0.4:P0口第4位- P0.5:P0口第5位- P0.6:P0口第6位- P0.7:P0口第7位3. 赋值方法对P0口的控制寄存器进行赋值时,可以通过位操作指令来设置或清零相应的位。
例如,我们需要将P0口的第0位设置为1,可以使用以下代码:```cP0CON |= 0x01;```表示将P0CON寄存器的第0位设置为1。
P0 = 0x80;P1 = 0x90;P2 = 0xA0;P3 = 0xB0;PSW = 0xD0;PSW寄存器,全称——程序状态字标志寄存器,是一个8位寄存器。
该寄存器用来存放运算结果的一些特征,如有无进位、借位等。
使用汇编编程是PSW寄存器很有用,但在C语言编程时,编译器会自动控制该寄存器,很少人为操作,仅作了解即可。
D7 D6 D5 D4 D3 D2 D1 D0CY AC F0 RS1 RS0 OV —— P①CY——进位标志位,他表示运算是否有进位(或借位)。
如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0.②AC——辅助进位标志,又称半进位标志,它指两个8位数运算低四位是否有半进位,即低四位相加(或相减)是否进位(或借位),如有AC为1,否则为0.③F0——由用户使用的一个状态标志位,可用软件来使它置1或清0,也可由软件来测试它,以控制程序的流向。
④RS1、RS0——四组工作寄存器选择控制位,在汇编语言中这两位用来选择4组工作寄存器区中的哪一组为当前工作寄存区。
⑤OV——溢出标志位,反应带符号数的运算结果是否有溢出。
有溢出时,此位为1,否则为0.⑥P——奇偶标志位,反应累加器ACC内容的奇偶性,如果ACC内中的运算结果有偶数个1,则P为0,否则为1.ACC = 0xE0;B = 0xF0;SP = 0x81;DPL = 0x82;DPH = 0x83;PCON = 0x87;电源管理寄存器,不能位寻址。
PCON用来管理单片机的电源部分,包括上电复位检测、掉电模式、空闲模式等。
单片机复位时PCON全部被清0.为序号D7 D6 D5 D4 D3 D2 D1 D0位符号SMOD SMOD0 LVDF P0F GF1 GF0 PD IDL①SMOD——该位与串口通信波特率有关。
SMOD=0:串口方式为1、2、3时,波特率正常。
SMOD=1:串口方式为1、2、3时,波特率加倍。
51单片机中的PCON寄存器(电源控制及波特率选择寄存器)
PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如下:
PCON???D7??D6 D5 D4 D3???D2??D1 D0
位符号SMOD -??-??-??GF1 GF0 PD IDL
在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。
系统复位默认为SMOD=0。
各位的定义:
SMOD:该位与串口通信有关。
SMOD=0; 串口方式1,2,3时,波特率正常。
SMOD=1; 串口方式1,2,3时,波特率加倍。
GF1,GF0:两个通用工作标志位,用户可以自由使用。
PD:掉电模式设定位。
PD=0 单片机处于正常工作状态。
PD=1 单片机进入掉电(Power Down)模式,可由外部中断或硬件复位模式唤醒,进入掉电模式后,外部晶振停振,CPU、定时器、串行口全部停止工作,只有外部中断工作。
IDL:空闲模式设定位。
IDL=0 单片机处于正常工作状态。
IDL=1 单片机进入空闲(Idle)模式,除CPU不工作外,其余仍继续工作,在空闲模式下可由任一个中断或硬件复位唤醒。