MCS-51单片机特殊寄存器功能说明
- 格式:doc
- 大小:593.00 KB
- 文档页数:11
特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了MCS-51单片机的运行状态。
很多功能也通过特殊功能寄存器来定义和控制程序的执行。
MCS-51有21个特殊功能寄存器,它们被离散地分布在内部RAM的80H—FFH地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。
表2是特殊功能寄存器分布一览表,我们对其主要的寄存器作一些简单的介绍。
表2 特殊功能寄存器标识符号地址寄存器名称ACC 0E0H 累加器B 0F0H B寄存器PSW 0D0H 程序状态字SP 81H 堆栈指针DPTR 82H、83H 数据指针(16位)含DPL和DPHIE 0A8H 中断允许控制寄存器IP 0B8H 中断优先控制寄存器P0 80H I/O口0寄存器P1 90H I/O口1寄存器P2 0A0H I/O口2寄存器P3 0B0H I/O口3寄存器PCON 87H 电源控制及波特率选择寄存器SCON 98H 串行口控制寄存器SBUF 99H 串行数据缓冲寄存器TCON 88H 定时控制寄存器TMOD 89H 定时器方式选择寄存器TL0 8AH 定时器0低8位TH0 8CH 定时器0高8位TL1 8BH 定时器1低8位TH1 8DH 定时器1高8位程序计数器PC(program Counter)程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。
PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。
PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。
累加器ACC(Accumulator)累加器A是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。
加、减、乘、除法运算的指令,运算结果都存放于累加器A或AB累加器对中。
1、定时器/计数器的方式寄存器TMODTMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址。
A.主要完成三个功能:*确定选择定时器还是计数器;*选择何种工作方式;*是否借用外中断控制定时器和计数器的启停;B.TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端);TMOD的高4位是控制T1的字段(T1--P3.5定时器/计数器1外部事件脉冲输入端)C.控制字的格式和含义a、GATE(TMOD.7)分为两种情况:GATE=0,定时器的启停和INT1无关,只取决于TR0;GATE=1,定时器的启停不仅要由TR0来控制,而且要INT1引脚的控制,只有二者都为高电平时定时器才开始工作;b、C/T(TMOD.6)分为两种情况:C/T=0,用作定时器;C/T=1,用作计数器;d、M1(TMOD.5), M0(TMOD.4)用M1,M0来控制定时器/计数器的4种工作方式:*方式0:M1=0,M0=0.13位定时/计数方式*方式1:M1=0,M0=1.16位定时/计数器*方式2,M1=1,M0=0.8位初值自动重新装入的8位定时/计数器*方式3,M1=1,M0=1.仅适用于T0,分为两个8位计数器,T1停止计数2、定时器/计数器控制寄存器TCONTCON是一个8位的特殊功能寄存器,对应的地址为88H,可为寻址。
A 控制字的格式和含义a、TF1(TCON.7),TF0(TCON.5)----T1、T0计数溢出标志位当计数器计数溢出时,该位置“1”。
使用查询方式时,此位作为状态位供cpu查询,但应注意在查询该位有效后应以软件方法及时将该位清“0”。
使用中断方式时,此位作为中断申请标志位,进入中断服务程序后由硬件自动清0.b、TR1(TCON.6),TR0(TCON.4)----计数运行控制位TR1(TR0)=1,启动定时/计数器工作的必要条件,还与GATE位的状态有关。
MCS-51单片机存储器结构MCS-51的存储器可分为四类:程序存储器一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。
那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。
程序相当于给微处理器处理问题的一系列命令。
其实程序和数据一样,都是由机器码组成的代码串。
只是程序代码则存放于程序存储器中。
MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。
对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。
强制CPU从外部程序存储器读取程序。
对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。
8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H 单元开始执行程序。
但在程序存储中有些特殊的单元,这在使用中应加以注意:其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。
另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:0003H—000AH 外部中断0中断地址区。
000BH—0012H 定时/计数器0中断地址区。
0013H—001AH 外部中断1中断地址区。
001BH—0022H 定时/计数器1中断地址区。
0023H—002AH 串行中断地址区。
可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。
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:进位标志。
,如果做加法的话,两数位运算器只能表示到0-255中的运算器是一种8位的运算器,我们知道,88051,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。
这样就没事了。
有相加可能会超过2550CY==1;无进、借位,进、借位,CY )78H+97H(01111000+10010111例:。
MCS-51单片机存储器结构MCS-51存储器可分为四类:程序存储器一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。
那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。
程序相当于给微处理器处理问题的一系列命令。
其实程序和数据一样,都是由机器码组成的代码串。
只是程序代码则存放于程序存储器中。
MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。
对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。
强制CPU从外部程序存储器读取程序。
对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。
8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。
但在程序存储中有些特殊的单元,这在使用中应加以注意:其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。
另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:0003H—000AH 外部中断0中断地址区。
000BH—0012H 定时/计数器0中断地址区。
0013H—001AH 外部中断1中断地址区。
001BH—0022H 定时/计数器1中断地址区。
0023H—002AH 串行中断地址区。
可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。
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存储器类型MCS-51单⽚机物理存储器区域1、 data区空间⼩,所以只有频繁⽤到或对运算速度要求很⾼的变量才放到data区内,⽐如for循环中的计数值。
2、 data区内最好放局部变量。
因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提⾼内存利⽤率。
当然静态局部变量除外,其内存使⽤⽅式与全局变量相同;3、确保你的程序中没有未调⽤的函数。
在Keil C⾥遇到未调⽤函数,编译器就将其认为可能是中断函数。
函数⾥⽤的局部变量的空间是不释放,也就是同全局变量⼀样处理。
这⼀点Keil C做得很愚蠢,但也没办法。
4、程序中遇到的逻辑标志变量可以定义到bdata中,可以⼤⼤降低内存占⽤空间。
在51系列芯⽚中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。
定义⽅法是: bdata bit LedState;但位类型不能⽤在数组和结构体中。
5、其他不频繁⽤到和对运算速度要求不⾼的变量都放到xdata区。
6、如果想节省data空间就必须⽤large模式,将未定义内存位置的变量全放到xdata区。
当然最好对所有变量都要指定内存类型。
7、当使⽤到指针时,要指定指针指向的内存类型。
在C51中未定义指向内存类型的通⽤指针占⽤3个字节;⽽指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。
如指针p是指向data区,则应定义为: char data *p;。
还可指定指针本⾝的存放内存类型,如:char data * xdata p;。
其含义是指针p指向data区变量,⽽其本⾝存放在xdata区。
bit是在内部数据存储空间中 20H .. 2FH 区域中⼀个位的地址,或者 8051 位可寻址 SFR 的⼀个位地址。
code是在 0000H .. 0FFFFH 之间的⼀个代码地址。
data是在 0 到 127 之间的⼀个数据存储器地址,或者在 128 .. 255 范围内的⼀个特殊功能寄存器(SFR)地址。
MCS-51单片机的特殊寄存器寄存器列表(21个)3、PSW寄存器4、IP寄存器5、P3接口寄存器8、SCON串口控制寄存器97H 96H 95H 94H 93H 92H 91H 90H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.010、TCON寄存器11、P0接口寄存器 87H 86H 85H 84H 83H 82H 81H 80H P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.012、TMOD 寄存器GATE C/T M 10M GATE C/T 1M 0M 控 制 T 1控 制 T 089H和T 类同01M 0M 00011011方 式方式0方式1方式2方式301定时器模式计数器模式01与INT 无关00与INT 有关13、PCON寄存器⏹SMOD:波特率倍增位。
当SMOD=1时,波特率加倍;当SMOD=0时,波特率不加倍。
⏹GF1、GF0:两个通用标志位,用户使用。
⏹当将PD置1的指令执行后,80C51进入掉电方式,此时片内振荡器停止工作,仅片内RAM内容被保持,SFR内容也被破坏。
掉电方式下Vcc可降到2V,耗电仅50μA。
退出掉电方式唯一方法是硬件复位。
应当保证进入掉电方式前Vcc不降下来,在通过硬件复位退出掉电方式之前应当先保证Vcc恢复到正常值。
⏹当将IDL位置1指令执行后,80C51进入节电方式。
这时供给CPU的时钟信号被切断,但时钟信号仍送给片内RAM、定时器、中断系统和串口,同时CPU状态被保存,即堆栈指针、程序计数器PC、程序状态字PSW、累加器ACC及通用寄存器的内容。
节电方式下Vcc仍为5V,但耗电从24mA降到3.7mA。
退出掉电方式有两种,一种是任一中断被激活,一种是硬件复位,前者较为常用。
MCS-51单片机21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SF R存储空间中,地址空间为80H-FFH,在这片SF R空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有R OM,用来存放程序,有R AM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SF R)。
这样的特殊功能寄存器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,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。
这样就没事了。
MCS-51单片机存储器结构MCS-51的存储器可分为四类:【1】外部程序存储器ROM 【2】外部数据存储器RAM【3】内部程序存储器ROM一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。
那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。
程序相当于给微处理器处理问题的一系列命令。
其实程序和数据一样,都是由机器码组成的代码串。
只是程序代码则存放于程序存储器中。
MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。
【对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。
强制CPU从外部程序存储器读取程序。
】【对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。
】8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。
但在程序存储中有些特殊的单元,这在使用中应加以注意:其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。
另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:0003H—000AH 外部中断0中断地址区。
000BH—0012H 定时/计数器0中断地址区。
0013H—001AH 外部中断1中断地址区。
001BH—0022H 定时/计数器1中断地址区。
0023H—002AH 串行中断地址区。
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:辅助进、借位(高半字节与低半字节间的进、借位)。
MCS51单片机SFR特殊寄存器MCS51单片机SFR特殊寄存器功能说明程序壮态字PSW(Program Status Word)(可以位寻址)寄时器名位地址分布(SFR中的位地址分布) 字节地址*PSW D7 D6 D5 D4 D3 D2 D1 D0 D0H Cy AC F0 RS1 RS1 OV - P 符号若P=1,表示累加器A中的个数为奇数。
若P=0,累加器A中的个数为偶数。
2.OV益出标志位若OV=1,表示运算时有益出产生。
否则OV=03.RS1 RS0寄存器选择位RS1 RS0 选择的寄寄存器物理地址0 0 0组00H-07H0 1 1组08H-0FH1 0 2组10H-17H1 1 3组18H-1FH用户自行设置。
5.AC辅助进位位若AC=1,表示在加减法运算时,低4位A3有进位或借位。
否则CY=0 6.CY进位标志位若CY=1,表示在加减法运算时,最高位A7有进位或借位。
否则CY=0 电源控制器&波特率(不可以位寻址)寄时器名位地址分布(SFR中的位地址分布)字节地址PCONPCON.7 PCON.6 PCON.5 PCON.4 PCON.3 PCON.2 PCON.1 PCON.0 87H SMOD - - - CF1 GF0 PD IDL 符号若IDL=1,进入空闲模式。
(硬件或重新上电可复位)。
若IDL=0,正常方式2.PD为停止运行控制位若PD=1,进入停止模式。
(硬件或外部中断可复位)。
若PD=0,正常方式3.GF0 CF1为通用标志位用户可通过指改变它的壮态。
4.SMOD为波特率倍率控制位若SMOD=1,则串行口的波特率为16位若SMOD=0, 则串行口的波特率为32位定时器/计数器模式寄存器TMOD(不可以位寻址)寄时器名位地址分布(SFR中的位地址分布) 字节地址TMOD TMOD7 TMOD6 TMOD5 TMOD4 TMOD3 TMOD2 TMOD1 TMOD0 89H GATE C/T M1 M0 GATE C/T M1 M0 符号定时器/计数器T1 定时器/计数器T0 --M1 M0 工作模式说明0 0 0 13位计数器/定时器(8192)0 1 1 16位计数器/定时器(65536)1 02 8位重装载定时器,当益出时将TH的值装入TL(256)1 1 3 T0为2个独立的8位计数/定时器(256)T1为无中断重装8位计数/定时器(256)若使C/T=0,为内部定时器模式。
(由TH和TL做定时器)若使C/T=1,为外部计数器模式。
(从T0/P3.4口或从T1/P3.5口输入计数脉冲)(前一次检测为高电平,后一次检测为低电平时,才会使计数器加1。
由于二次的检测需要24个时钟脉冲,通常T0,或T1输入线上的计数脉冲频率总是<100KHZ)3.GATE为定时器/计数器控制位当GATE=1时,TR控制位置位1时,而且只有在INT0或(INT1)为高时,才可以打开定时器/计数器工作。
(与INT0或INT1有关)(当GATE=1时,则INT0或INT1作为辅助控制线,不再用作中断请求输入线。
GATE的这种控制作用可使定时器/计数器用来测量脉冲的宽度)当GATE=0时,定时器/计数器工作与INT0或INT1无关。
定时器初值的计算:TC=M-T X/T P 左公式可转换为TC=M-T X*fosc/ 12(12T)或6(6T)或1(1T)TC为实际定时时间初值M为模值 (M=8或M=13,或M=16)Fosc为时钟频率T X为定时器需要的定时时间T P为机器周期时钟周期 T CLK=1/Fosc (如:STC的开发板的Fosc是11.0592MHZ)T CLK =1/11.0592MHZT CLK≈0.09042us机器周期TP=12*T CLK或(6*T CLK)或(1*T CLK) 左公式转换为:≈12*0.09042us TP= 12/Fosc(12T CLK)或6/Fosc(6T CLK) 或1/Fosc (1T CLK)≈1.08507us寄时器名位地址分布(SFR中的位地址分布) 字节地址*TCON8F 8E 8D 8C 8B 8A 89 88 88H TF1TR1TF0TR0IE1IT1IE0IT0符号用于定时器/计数器T0/T1 用于中断INT0/INT1 --1.IT0为外部中断INT0的中断触发标志位若使IT0=1,INT0为负边沿触发。
(检测二次:前一次检测为高电平,后一次检测为低电平时,INT0上中断才有效)若使IT0=0,INT0为低电平触发(软件复位)。
2.IE0为外部中断INT0的中断请求标志位若IE0=1,表示INT0上有中断产生。
(一直保持CPC响应中断时,才被硬件清0)若IE0=0,(硬件复位)。
3.IT1为外部中断INT1的中断触发标志位若使IT1=1,INT1为负边沿触发。
(检测二次:前一次检测为高电平,后一次检测为低电平时,INT1上中断才有效)若使IT1=0,INT1为低电平触发(软件复位)。
4.IE1为外部中断INT1的中断请求标志位若IE1=1,表示INT1上有中断产生。
(一直保持CPC响应中断时,才被硬件清0)若IE1=0,(硬件复位)。
5.TR O为定时器T0的开启位若使TR O=1,则定时器T0开启计数。
若使TR O=0,则定时器T0停止计数。
6.TF0为定时器T0的中断益出标志位若TF0=1,表示T0有中断产生。
(一直保持CPC响应中断时,才被硬件清0)若TF0=0,表示T0无中断产生。
(硬件复位)7.TR1为定时器T1的开启位若使TR1=1,则定时器T1开启计数。
若使TR1=0,则定时器T1停止计数。
8.TF1为定时器T1的中断益出标志位若TF1=1,表示T1有中断产生。
(一直保持CPC响应中断时,才被硬件清0)若TF1=0,表示T1无中断产生。
(硬件复位)寄时器名位地址分布(SFR中的位地址分布)字节地址T2MOD T2MOD7T2MOD6T2MOD5T2MOD4T2MOD3T2MOD2T2MOD1T2MOD089H - - - - - - T2OE DCEN 符号定时器/计数器2控制器T2CON(不可以位寻址)寄时器名位地址分布(SFR中的位地址分布)字节地址T2CON T2CON7 T2CON6 T2CON5 T2CON4 T2CON3 T2CON2 T2CON1 T2CON0 C8H TF2EXF2RCLK TCLK EXEN2TR2C/T2CP/RL2符号2若使CP/RL2=1,工作于捕获方式。
若使CP/RL2=0,工作于自动再装入方式。
(RCLK或TCLK为1时,CP/RL2被忽略)2.C/T2为内部定时器/外部计数器选择位若使C/T2=1时,为外部计数器,计数脉冲来自T2(P1.0)若使C/T2=0时,为内部定时器,以震荡脉冲的12分频信号为计数信号。
3.TR2为T2启动/停止控制位若使TR2=1时,T2开始计数/定时。
若使TR2=0时,T2停止计数/定时。
4.EXEN2为T2外部使能标志位若使EXEN2=1,T2为捕获方式。
T2EX(P1.1)发生负跳变时,TL2和TH2的当前值自动捕获到RCAP2L和RCAP2H中,同时置中断标志位EXF2若EXEN2=0,T2为自动装入方式。
T2EX(P1.1)发生负跳变时,RCAP2L和RCAP2H自动装入TL2和TH2中。
同时置中断标志位EXF25.TCLK为串行口发送时钟选择标志位。
若使TCLK=1,定时器2的益出脉冲作为串口模式1和模式3的发送时钟。
若使TCLK=0,定时器1的益出脉冲作为串口模式1和模式3的发送时钟。
6.RCLK为串行口接收时钟选择标志位。
若使RCLK=1,定时器2的益出脉冲作为串口模式1和模式3的接收时钟。
若使RCLK=0,定时器1的益出脉冲作为串口模式1和模式3的接收时钟。
7.EXF2为定时器2的外部中断标志位。
当使EXF2=1时,T2EX(P1.1)发生负跳变时置EXF28.TF2为定时器2益出标志位若TF2=1,表示定时器2益出。
(方式2,3 TF2置位,方式3 TF2不置位)定时器2的三种方式选择RCLK或TCLK CP/RL2 TR2 模式1 0 0 1 16位自动重装方式2 0 1 1 16位捕获方式3 1 X 1 串行波特率发生方式4 X X X 停止串行口控制寄存器(可以位寻址)寄时器名位地址分布(SFR中的位地址分布)字节地址*SCON 9F 9E 9D 9C 9B 9A 99 98 98H SM0SM1SM2REN TB8RB8TI RI 符号若RI=1,表示UART接收完成,产生中断。
(在模式0时,当串行接收到第8位结束时,由内部硬件自动置位。
响应中断后,用户需要通过软件使它复位;在其它模式时,当串行接收到停止位的中间时刻,由内部硬件怎动置位。
响应中断后,用户需要通过软件使它复位)若RI=0,表示UART无接收中断。
2.TI发送中断请求标志位若TI=1,表示UART发送完成,产生中断。
(在模式0时,当串行发送数据第8位结束时,由内部硬件自动置位。
TI在发送前,用户先需要通过软件使它复位;在其它模式时,则停止位开始发送时,由内部硬件怎动置位。
TI在发送前,用户先需要通过软件使它复位)若TI=0,表示UART无发送收中断。
3.RB8为接收数据第9位在模式2和模式3时,存放接收数据第9位。
在模式1时,若SM2=0,则RB8用于存放接收到停止位。
在模式0时,不使用RB84.TB8为发送数据第9位在模式2和模式3时,存放发送数据第9位。
(TB8需要通过软件置位或复位)在模式0时,不使用TB85.REN为允许/禁止串行接收位REN=0,禁止接收数据REN=1,允许接收数据6.SM2为多机通信控制位在模式0时,SM2不用,应设置SM2=0。
在模式1时,SM2不用,应设置SM2=0;如果SM2=1,则只有接收到有效的停止位时才置位中断标志位RI=1在模式2和3时,若SM2=0,串行口以单机发送或接收方式工作。
T1和RI以正常方式激活。
但不会引起中断请求;若SM2=1,REN=1,则从机只有接收到RB8为1时才激活中断标志位RI为1,并向主机请求中断。
7.SM0和SM1为串行方式控制位SM0SM1工作模式说明波特率0 0 0 同步移位寄存器F osc/120 1 1 8位UART, 波特率可变由定时器T1和SMOD决定1 02 9位UART, 波特率可变若SMOD=1,则F osc/32 若SMOD=0,则F osc/641 1 3 9位UART, 波特率可变由定时器T1和SMOD决定XICON辅助中断允许控制寄存器(可以位寻址)寄时器名位地址分布(SFR中的位地址分布)字节地址*XICONC0H PX3 EX3 IE3 IT3 PX2 EX2 IE2 IT2 符号用于中断INT3控制用于中断INT2控制用户通过软件设置设置IE中断允许控制寄存器(可以位寻址)寄时器名位地址分布(SFR中的位地址分布)字节地址*IEAF - AD AC AB AA A9 A8 A8H EA - ET2ES ET1EX1ET0EX0符号用户通过软件设置设置0若使EX0=0,则INTO中断请求被关闭。