通过前面的学习,我们已知
单片机的内部有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。
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)RS1、RS0:工作寄存器组选择位。这个我们已知了。
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、P0、P1、P2、P3:这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。
6、SP:堆栈指针。(专用于指出堆栈顶部数据的地址。)
[1] [2] 下一页
本文关键字:单片机 寄存器 综合-其它,单片机-工控设备 - 综合-其它