零基础学习8051单片机(四)

发布时间:2024年01月23日

续上一篇,介绍剩余的51单片机硬件部分。

1.数据存储器空间

分为片内和片外两部分


1.1 片内数据存储器(RAM)

共128个单元,字节地址为00H~7FH,如图:

?注:

(1)0~3位寄存器区,任何时候都可以通过PSW寄存器的RS1、RS0这两位,选择其中额的一组作为当前工作的寄存器区。

(2)可位寻址区不仅可以进行字节寻址,还可以进行位寻址,对每一位进行编写。

(3)用户RAM区,用户进行程序的编写。

(4)从80H~FFH是特殊功能寄存器的地址。

(5)由于单片机本身硬件资源少,在编程时要充分利用好这些资源。

1.2 片外数据存储器


当片内RAM不够用时,需外扩,最多可外扩64KB的RAM。

注:片内RAM与片外RAM两个空间是相互独立的,片内RAM与片外RAM的低128B的地址是相同的,但由于使用的是不同的访问指令,所以不会发生冲突。

2.特殊功能寄存器(SFR)

在片内RAM的 80H~FFH 区域中,共26个,占用片内的后128个单元地址。如图

注:

(1)与AT89C51相比,新增5个SFR:DP1L、DP1H、AUXR、AUXR1和WDTRST
(2)凡是可位寻址的SFR,字节地址未位只能是0H或8H。若读/写未定义单元,将得到一个随机数。有相应的指令进行访问。有些可进行位寻址,只有末位为8和0的才能进行位寻址。

注:图中标注阴影的是比89C51多出来的。?

?3.堆栈指针SP


指示栈顶在内部RAM中,堆栈向上生长。

注:单片机复位后,SP为07H,堆栈从08H单元开始,由于08H~1FH单元分别是属于1~3组的工作寄存器区,最好在复位后把SP值改置为60H或更大的值,避免堆栈与工作寄存器冲突。

作用:

堆栈主要为子程序调用和中断操作而设,保护断点和现场。

(1)保护断点。

无论子程序调用还是中断服务子程序调用最终都要返回主程序。应预先把主程序断点在堆栈中保护起来,为程序正确返回做准备。

(2)现场保护。

执行子程序或中断服务子程序时,要用到一些寄存器单元,会破坏原有内容。要把有关寄存器单元的内容保存起来,送入堆栈,这就是所谓的“现场保护”两种操作:数据压入(PUSH)堆栈,数据弹出(POP)堆栈。

两种操作:数据压入(PUSH)堆栈,致据弹出(POP)堆栈。

注:当要往堆栈里压一个数据时,堆栈指针先增1,然后数据放进去,当弹出数据时,数据先弹出来,堆栈指针减1。

4.寄存器B


为执行乘和除而设。。

乘法,两乘数分别在A、B中,执行乘法指令后,乘积在BA中

除法,被除数取自A,除数取自B,商存放在A中,余数存B中,

注:

(1)高8位存到B里面,低8位存到A里面。

(2)不执行乘、除的情况下,可把它当作一个普通寄存器来使用。

5.AUXR寄存器


AUXR是辅助寄存器,其格式如图

注:8EH是寄存器地址

其中:

?注:

(1)DISALE是低8位地址的地址锁存信号

(2)DISRTO 写0,输出看门狗复位信号使单片机复位,写1不让其输出

(3)空闲模式是节电模式下的一种模式,为了省电很多都不运行,WDIDLE就是看让不让他运行

6.数据指针DPTRO和DPTR1

双数据指针寄存器,便于访问数据存储器

DPTRO:AT89C51单片机原有的数据指针
DPTR1:新增加的数据指针。
AUXR1的DPS位用于选择两个数据指针。

当DPS=0时,选用DPTRO,当DPS=1时,选用DPTR1。

数据指针可作为一个16位寄存器来用,也可作为两个独立的8位寄存器DPOH(或DP1H)和DPOL(或DP1L)来用,是用来访问外部RAM的指针寄存器。

7.AUXR1寄存器

为辅助寄存器,格式如图
DPS:数据指针寄存器选择位。
????????0:选择数据指针寄存器DPTRO:
????????1:选择数据指针寄存器DPTR1.

?注:字节地址:A2H

8.看门狗定时器WDT

WDT包含一个14位计数器和看门狗定时器复位寄存器(WDTRST)
当CPU由于干扰,程序陷入死循环或跑飞状态时,WDT提供了一种使程序恢复正常运行的有效手段。

注:除SP和B以外,其余的均为S51在C51基础上新增加的SFR。

文章来源:https://blog.csdn.net/2401_82720146/article/details/135726678
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。