(玩电子) 电子技术学习与研讨
当时方位:单片机教程网 >> 根底教程 >> 阅览文章

7课:单片机的特别功用寄存器

作者:佚名   来历:本站原创   点击数:x  更新时刻:2007年08月16日   【字体:

   经过前面的学习,咱们已知单片机的内部有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

符号

地址

功用介绍

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

89A

守时器/计数器办法操控寄存器

TCON

88H

守时器/计数器操控寄存器

DPH

83H

数据地址指针(高8位)

DPL

82H

数据地址指针(低8位)

SP

81H

仓库指针

P0

80H

P0口锁存器

PCON

87H

电源操控寄存器

  表1
 

<特别功用寄存器地址映象表(一)>

 

<特别功用寄存器地址映象表(二)>

 

<特别功用寄存器地址映象表(三)>

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

1、ACC:累加器,常常用A表明。这是个什么东西,可不能从姓名上了解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个姓名呢?或许是由于在运算器做运算时其间一个数一定是在ACC中的原因吧。它的姓名特别,身份也特别,稍后咱们将学到指令,能发现,一切的运算类指令都离不开它。

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

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

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0

RS1

RS0

OV

 

P

      表2

PSW也称为标志寄存器,了解这个关于了解单片机原理十分的重要,寄存各有关标志。其结构和界说如下:

 

  下面咱们逐个介绍sfr各位的用处

(1)CY:进位标志。用于表明Acc.7有否向更高位进位。8051中的运算器是一种8位的运算器,咱们知道,8位运算器只能表明到0-255,假如做加法的话,两数相加或许会超越255,这样最高位就会丢掉,形成运算的过错,怎样办?最高位就进到这里来。这样就没事了。

例:78H+97H(01111000+10010111)

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

例:57H+3AH(01010111+00111010)

(3)F0:用户标志位,由咱们(编程人员)决议什么时分用,什么时分不必。

(4)RS1RS0:作业寄存器组挑选位。这个咱们已知了。
              RS1、RS0 = 00 —— 0区(00H~07H)

              RS1、RS0 = 01 —— 1区(08H~0FH)

              RS1、RS0 = 10 —— 2区(10H~17H)

              RS1、RS0 = 11 —— 3区(18H~1FH) 

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

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

例:某运算成果是78H(01111000),明显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,咱们在用届时再介绍。

作者点评:这一课或许比较难懂了,看咱们的谈论许多都这样说,其实并不需求把上面的这些东西都死记硬背在脑子里边,这是很难的,咱们只需求了解他的作业原理,一次看不懂就要多看几回,比及要写程序的时分,咱们再把这些表格拿出来查阅所以主张你把本页保存为书签.笔者在开端学习单片机的时分也是这样做的.

宣布谈论】【告知老友】【保藏此文】【封闭窗口

文章谈论