特殊功能寄存器
- 格式:doc
- 大小:20.50 KB
- 文档页数:2
特殊功能寄存器
在学习51单⽚机的过程中,代码⾥总会有TMOD,P0等等⼀系列⾃⼰根本没有定义过的东东。
今天在学习定时器中断时看到了介绍TMOD是特殊功能寄存器。
今天就来了解⼀下特殊功能寄存器吧!
特殊功能寄存器是80C51系列单⽚机中个功能部件对应的计时器⽤于存放相应功能的控制命令、状态和数据。
80C51有21个特殊功能寄存器,52⼜多了五个(*指代80C52独有的特殊功能寄存器)。
MCS-51单⽚机的特殊功能寄存器
符号地址功能介绍
F0H B寄存器
E0H
D0H程序状态
TH2*CDH/计数器2(⾼8位)
TL2*CCH定时器/计数器2(低8位)
RLDH*CBH外部输⼊(P1.1)计数器/⾃动再装⼊模式时初值寄存器⾼⼋位
RLDL*CAH外部输⼊(P1.1)计数器/⾃动再装⼊模式时初值寄存器低⼋位
T2CON*C8H T2/计数器
B8H中断优先级控制寄存器
B0H P3⼝
A8H中断允许
A0H P2⼝
SBUF99H
98H
P190H P1⼝
TH18DH/计数器1(⾼8位)
TH08CH定时器/计数器0(⾼8位)
TL18BH/计数器1(低8位)
TL08AH/计数器0(低8位)
89H T0、T1定时器/计数器⽅式
88H T0、T1/计数器控制寄存器
DPH83H数据地址指针(⾼8位)
DPL82H数据地址指针(低8位)
SP81H
P080H P0⼝
PCON87H电源控制寄存器。
特殊功能寄存器(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累加器对中。
MCS-51系列特殊功能寄存器(80H~FFH)1.P0 (80H)2.SP 栈指针(81H)3.DPTR 数据指针(由DPH和DPL组成)DPL 数据指针低八位(82H)DPH 数据指针高八位(83H)4.PCON 电源管理寄存器(87H)SMOD :波特率倍增位。
SMOD=0时,不变;SMOD=1时,倍增。
GF1,GF0 :通用标志位。
PD :掉电方式位。
PD=1时,进入掉电方式。
IDL :待机方式位。
IDL=1时,进入待机方式。
5.TMOD 定时/记数方式寄存器(89H)GATE :门控位。
GATE=0时,直接由TR启动定时器;GATE=1时,须外部INT为1时,且TR启动定时器。
C/T :功能选择位。
C/T=0时,为定时器;C/T=1时,为计数器。
M1,M0 :方式选择位。
6.T CON 定时/记数控制寄存器(88H)TF1 :定时器1溢出标志。
由硬件置1,并且进入中断;进入中断服务程序后,由硬件清0,查询方式下由软件清0。
TR1 :定时器运行控制位。
TR1=0时,关闭T1;TR1=1时,启动T1。
TF0 :定时器0溢出标志。
由硬件置1,并且进入中断;进入中断服务程序后,由硬件清0,查询方式下由软件清0。
TR0 :定时器运行控制位。
TR0=0时,关闭T0;TR0=1时,启动T0。
IE1 :外部中断1请求标志。
IT1 :外部中断1触发方式。
IT1=0时,为低电平触发方式;IT1=1时,为负跳变触发方式(边沿触发)。
IE0 :外部中断0请求标志。
IT0 :外部中断0触发方式。
IT0=0时,为低电平触发方式;IT0=1时,为负跳变触发方式(边沿触发)。
7.P1 (90H)SM0,SM1 :串行方式控制。
SM2 :多机通讯控制位。
SM2=0时,禁止多机通讯;SM2=1时,允许多机通讯。
REN :允许串行接收位。
REN=0时,禁止串行接收;REN=1时,允许串行接收。
TB8 :发送数据第九位(D8)。
单片机89C51特殊功能寄存器高手从菜鸟忽略作起之(三)单片机共有21个特殊功能寄存器,下面从其功能,位结构,地址,读写方法对其作详细介绍。
一,特殊功能寄存器总述。
二,特殊功能寄存器分类:1.CPU控制类(6个):Acc,B,PSW,DPL,DPH,SP.2.中断控制类(2个):IE,IP.3.计数/定时类(6个):TMOD,TCON,TL0,TL1,TH0,TH1.4.并口端口类(4个):P0,P1,P2,P3.5.串口端口类(2个):SCON,SBUF.6.电源管理类(1个):PCON.三,特殊功能寄存器详述:1.CPU控制类(6个):Acc,B,PSW,DPL,DPH,SP1.1 Acc:累加器,可按位,字节访问。
1.2 B:辅助寄存器,用于进行乘除运算。
P:奇偶校验位:P=0:1的个数为奇数;P=1,1的个数为偶数。
---:保留位,没使用。
OV:Over flow,溢出标志,OV=0:没溢出;OV=1:溢出。
Rs0:Regedit select 0,寄存器选取0.RS1:Regedit select 1,寄存器选取1。
F0:User Flag bit:用户自定义位。
Ac: Auxiliary Carry,辅助进位标志,由低4位运算时,是否有向高4位进位。
Cy:Carry,进位标志。
字节运算时,是否有进位。
1.4 DPTL:Data Pointer Register Low,数据指针寄存器低8位。
1.5 DPTH:Data Pointer Register High,数据指针寄存器高8位。
1.6 SP: Stock Pointer:栈指针寄存器。
2.中断控制类寄存器(2个):IE,IPEX0: Enable Extra 0 ,INT0 中断允许位。
ET0: Enable Timer 0,C/T0 中断允许位。
EX1: Enable Extra 1 ,INT1 中断允许位。
ET1: Enable Timer 1,C/T1 中断允许位。
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位的状态有关。
(一)TMOD(定时器模式控制寄存器)1、字节地址89H,不可位寻址2、各位定义(MSB) (LSB)7 6 5 4 3 2 1 0GATE C/T M1 M0 GATE C/T M1 M0---------------- -----------------控制 T1 控制 T0GATE:门控位。
当GATE=1时计数器受外部中断信号控制C/T :计数器和定时器选择位。
C/T=0为定时器M1M0 操作方式 功能0 0 方式0 13位计数器0 1 方式1 16位计数器1 0 方式2 可以自动重新装载的8位计数器1 1 方式3 T0分为2个独立的计数器、T1停止计数。
注意:当单片机复位时TMOD各位都为0。
(二)TCON(定时器/外部中断控制寄存器)1、字节地址88H,可位寻址。
2、各位定义MSB LSB7 6 5 4 3 2 1 0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF1:T1溢出标志。
当T1溢出时,有硬件置1,可向CPU发出中断请 求,CPU响应中断后由硬件 TR1:启动T1标志。
IE1:外部中断1请求标志IT1:外部中断触发方式,IT1=0为电平触发方式,低电平有效。
IT1=1为边沿触发标志高电平(三)IE(中断允许寄存器)1、字节地址A8H,可位寻址。
2、各位定义MSB LSB7 6 5 4 3 2 1 0EA *ET2 ES ET1 EX1 ET0 EX0EA:总中断允许位 ==1允许ES:串口中断允许位ET1:T1中断允许位(四)IP(中断优先级寄存器)1、字节地址B8H,可位寻址。
2、各位定义MSB LSB7 6 5 4 3 2 1 0/ / PT2 PS PT1 PX1 PT0 PX0-----------------------------------》优先级从低到高(五)T2CON(T2方式控制寄存器)1、字节地址:C8H2、各位定义:MSB LSB7 6 5 4 3 2 1 0TF2 EXF2 RCLK TCLK EXEN2 RT2 C/T2 CP/RL2(六)TL0,THO,TL1,TH1,TL2,TH2,RCAP2L,RCAP2H(七)SCON(串口控制寄存器)1、位地址98H,可以位寻址2、各位定义MSB LSB7 6 5 4 3 2 1 0SM0 SM1 SM2 REN TB8 RB8 TI RISM0SM1 工作方式 功能说明0 0 0 移位寄存器方式(用于IO扩展)0 1 1 8位UART波特率可变1 02 9位UART1 1 3 9位UARTREN:允许接收控制位。
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-----程序状态字。
特殊功能寄存器
特殊功能寄存器在单片机中扮演着非常重要的角色,单片机的各硬件组成部分如算术逻辑单元、并行I/O口、串行口、定时器/计数器、中断系统等都有对应的特殊功能寄存器,用户程序通过特殊功能寄存器对各个硬件组成部分进行设置,并通过特殊功能寄存器获得各设备的当前工作状态。
要想使用单片机的各项功能,必须对相关的特殊功能寄存器非常熟悉。
特殊功能寄存器本质上是一些具有特殊功能的存储单元,这些存储单元分布在内部数据存储器地址80H~7FH的存储区域,用直接寻址的寻址方式进行访问。
存储器
单片机的存储器按照其功能可分为数据存储器(RAM)和程序存储器(ROM),按照其存在的位置又可以分为片外存储器和片内存储器。
在片内RAM区中,专门划分出一块区域用来存放特殊功能寄存器SFR(Special Function Register),称为特殊功能寄存器区。
在片内RAM 中,有一些特殊地址的存储单元的每一个二进制位都具有位地址,这些存储单元组成可位寻址区。
片内RAM地址为00H~1FH的存储单元用作工作寄存器区。
综上所述,单片机的整个存储器空间按照其所处的位置和功能可划分为内部程序存储器区、外部程序存储器区、低128字节的内部数据存储器区(包含工作寄存器区和位寻址区)、高128字节的内部数据存储器区、特殊功能寄存器区、外部数据存储器区等6个区域。