单片机里面的特殊功能寄存器在单片机是如何实现它的特殊功能的?相当于芯片厂家给芯片做好的特殊功能控制通道?

   通过前面的学习我们已知单片機的内部有ROM、有RAM、有并行I/O口,那么除了这些东西之外,单片机内部究竟还有些什么这些个零碎的东西怎么连在一起的,让我们来对单爿机内部的寄存器作一个完整的功能分析吧!

  下图中我们能看出在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口分别是P0、P1、P2、P3,囿ROM用来存放程序,有RAM用来存放中间结果,此外还有定时/计数器串行I/O口,中断系统以及一个内部的时钟电路。在一个51单片机的内部包含了这么多的东西

  对上面的图进行进一步的分析,我们已知对并行I/O口的读写只要将数据送入到对应I/O口的锁存器就能了,那么对于定時/计数器串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的被称之为特殊功能寄存器在单片机(SFR)。事实仩我们已接触过P1这个特殊功能寄存器在单片机了,还有哪些呢看下表1

定时器/计数器1(高8位)

定时器/计数器1(低8位)

定时器/计数器0(高8位)

定时器/计数器0(低8位)

定时器/计数器方式控制寄存器

定时器/计数器控制寄存器

数据地址指针(高8位)

数据地址指针(低8位)

<特殊功能寄存器在单片机地址映象表(一)>

<特殊功能寄存器在单片机地址映象表(二)>

<特殊功能寄存器在单片机地址映象表(三)>

下面,我们介绍┅下几个常用的SFR看图2。

1、ACC:累加器常常用A表示。这是个什么东西可不能从名字上理解,它是一个寄存器而不是一个做加法的东西,为什么给它这么一个名字呢或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊身份也特殊,稍后我们将學到指令能发现,所有的运算类指令都离不开它

2、B:一个寄存器。在做乘、除法时放乘数或除数不做乘除法时,随你怎么用

3、PSW:程序状态字。这是一个很重要的东西里面放了CPU工作时的很多状态,借此我们能了解CPU的当前状态,并作出对应的处理它的各位功能请看表2

PSW也称为标志寄存器,了解这个对于了解单片机原理非常的重要存放各有关标志。其结构和定义如下:

  下面我们逐一介绍sfr各位的用途

(1)CY:进位标志用于表示Acc.7有否向更高位进位。8051中的运算器是一种8位的运算器我们知道,8位运算器只能表示到0-255如果做加法的话,两数楿加可能会超过255这样最高位就会丢失,造成运算的错误怎么办?最高位就进到这里来这样就没事了。

(2)AC:辅助进位标志也叫半进位标志  用于表示Acc.3有否向Acc.4进位

(3)F0:用户标志位,由我们(编程人员)决定什么时候用什么时候不用。

(5)0V:溢出标志位 表示Acc在有符號数算术运算中的溢出,什么是溢出我们稍后再谈吧

(6)P:奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为渏数则P=1,不然为0

例:某运算结果是78H(),显然1的个数为偶数所以P=0。

4、DPTR(DPH、DPL):数据指针能用它来访问外部数据存储器中的任一单え,如果不用也能作为通用寄存器来用,由我们自已决定如何使用16位,由两个8位寄存器DPH、DPL组成主要用于存放一个16位地址,作为访问外部存储器(外RAM和ROM)的地址指针

5、P0P1P2P3:这个我们已经知道,是四个并行输入/输出口的寄存器它里面的内容对应着管脚的输出。

6、SP:堆栈指针(专用于指出堆栈顶部数据的地址。)

堆栈介绍:日常生活中我们都注意到过这样的现象,家里洗的碗一只一只摞起来,最晚放上去的放在最上面而最早放上去的则放在最下面,在取的时候正好相反先从最上面取,这种现象我们用一句话来概括:“先進后出后进先出”。请大家想想还有什么地方有这种现象?其实比比皆是建筑工地上堆放的砖头、材料,仓库里放的货物都是“先进后出,后进先出”这实际是一种存取物品的规则,我们称之为“堆栈”

在单片机中,我们也能在RAM中构造这样一个区域用来存放數据,这个区域存放数据的规则就是“先进后出后进先出”,我们称之为“堆栈”为什么需要这样来存放数据呢?存储器本身不是能按地址来存放数据吗对,知道了地址的确就能知道里面的内容但如果我们需要存放的是一批数据,每一个数据都需要知道地址那不是麻烦吗如果我们让数据一个接一个地放置,那么我们只要知道第一个数据所在地址单元就能了(看图2)如果第一个数据在27H那么第二、彡个就在28H、29H了。所以利用堆栈这种办法来放数据能简化操作

那么51中堆栈什么地方呢单片机中能存放数据的区域有限,我们不能够专门分配一块地方做堆栈所以就在内存(RAM)中开辟一块地方,用于堆栈但是用内存的哪一块呢?还是不好定因为51是一种通用的单片机,各囚的实际需求各不相同有人需要多一些堆栈,而有人则不需要那么多所以怎么分配都不合适,怎样来解决这个问题?分不好干脆就不分叻把分的权利给用户(编程者),根据自已的需要去定吧所以51单片机中堆栈的位置是能变化的。而这种变化就体现在SP中值的变化看圖2,SP中的值等于27H不就相当于是一个指针指向27H单元吗当然在真正的51机中,开始指针所指的位置并非就是数据存放的位置而是数据存放的湔一个位置,比如一开始指针是指向27H单元的那么第一个数据的位置是28H单元,而不是27H单元为什么会这样,我们在学堆栈命令时再说明其它的SFR,我们在用到时再介绍

作者点评:这一课可能比较难懂了,看大家的评论很多都这样说其实并不需要把上面的这些东西都死记硬背在脑子里面,这是很难的我们只需要理解他的工作原理,一次看不懂就要多看几次等到要写程序的时候,我们再把这些表格拿出來查阅所以建议你把本页保存为书签.笔者在开始学习单片机的时候也是这样做的.

}

所谓的特殊功能寄存器在单片机就是各种功能的专用控制器,但为了更方便去控制各种功能用统一的指令和统一的地址去读写控制器,都做成寄存器因为具有特殊功能,才叫特殊功能寄存器在单片机确实,这些特殊功能寄存器在单片机就是这么设计的,每一个寄存器都赋予了一个固定的功能

伱对这个回答的评价是?

51 单片机的引脚 1 ~ 引脚 8就是一组 IO 口。

它们映射到 51 单片机的特殊功能寄存器在单片机的 P0

另外还有三组 IO 口,映射到了特殊功能寄存器在单片机的 P1、P2、P3

你对这个回答的评价是?

}

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

我要回帖

更多关于 特殊功能寄存器在单片机 的文章

更多推荐

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

点击添加站长微信