23 存储器配置 49.docx

上传人:b****6 文档编号:7785242 上传时间:2023-01-26 格式:DOCX 页数:17 大小:25.86KB
下载 相关 举报
23 存储器配置 49.docx_第1页
第1页 / 共17页
23 存储器配置 49.docx_第2页
第2页 / 共17页
23 存储器配置 49.docx_第3页
第3页 / 共17页
23 存储器配置 49.docx_第4页
第4页 / 共17页
23 存储器配置 49.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

23 存储器配置 49.docx

《23 存储器配置 49.docx》由会员分享,可在线阅读,更多相关《23 存储器配置 49.docx(17页珍藏版)》请在冰豆网上搜索。

23 存储器配置 49.docx

23存储器配置49

存储器配置

哈佛结构MCS-51单片机

程序存储器和数据存储器分开设计。

普林斯顿结构微机

只有一个地址空间,程序和数据可以随意安排在这一地址范围内不同的空间。

 

程序存储器(ROM)

指令、常数掉电不失

数据存储器(RAM)

数据可用程序改写

在单片机内部,程序存储器和数据存储器存贮器是分开制造的。

通常,程序存储器的容量较大,数据存储器的容量较小,这是单片机用作控制的一大特点。

程序存储器

数据存储器

片内

4KB

128B

片外

64KB

64KB

物理上有4个存储空间

片内程序存储器

片外程序存储器

片内数据存储器

片外数据存储器

逻辑上有3个存储空间

片内外统一编址的程序存储器

MOVC

片内数据存储器

MOV

片外数据存储器

MOVX

图存储器配置

程序存储器

输入引脚

=0访问片外程序存储器

=1访问片内程序存储器

程序计数器PC

16位程序地址寄存器,专门用来存放下一条需要执行指令的地址,能自动加1。

PC指示程序执行的位置

PC中存放的是程序存储器的地址

PC中存放下一条将要执行的指令的地址

复位后PC=0000H

寻址范围:

0000H~0FFFFH

64KB65536B

入口地址

入口地址

复位

0000H

0003H

T0

000BH

0013H

T1

001BH

串行口

0023H

T2

002BH

通常,在入口地址处写一条跳转指令,跳转至服务程序。

0000H

LJMP0030H

0003H

LJMP1000H

000BH

LJMP2000H

0030H

主程序

1000H

INT0中断服务程序

RETI

2000H

T0中断服务程序

MOVC

常数

MOVC指令

MOVDPTR,#2000H

MOVA,#08H

MOVCA,@A+DPTR

片外数据存储器

最大64KB

0000H~0FFFFH

只可用MOVX指令

间接寻址方式访问

读:

MOVDPTR,#2008H

MOVXA,@DPTR

写:

MOVA,#12H

MOVDPTR,#2008H

MOVX@DPTR,A

片外数据存储器与片外I/O设备统一编址

(如A/D、D/A、I/O芯片等)

片内数据存储器(低128B)

地址范围:

00H~7FH

通用数据区(30H~7FH)

80个字节

用于存放的用户数据或作堆栈区使用。

读:

MOVA,30H;直接寻址

MOVR0,#30H

MOVA,@R0;间接寻址

INCR0

写:

MOVA,#12H

MOV30H,A

位寻址区(20H~2FH)

16个字节

即可按字节寻址,又可按位寻址

8×16=128位

用途:

开关决策、逻辑电路仿真、实时控制

位地址空间:

00H~7FH

位操作指令:

SETB

CLR

CPL

JB

JNB

2FH字节的位地址:

D7

D0

7FH

7EH

7DH

7CH

7BH

7AH

79H

78H

将2FH字节的最高位置“1”

不能影响其它位

SETB7FH

ORL2FH,#10000000B

MOV2FH,#10000000B

最高位清“0”

CLR7FH

ANL2FH,#01111111B

若2FH字节的最高位为“1”,

则跳转到LED_ON

JB7FH,LED_ON

若2FH字节的最高位为“0”,

则跳转到LED_OFF

JNB7FH,LED_OFF

工作寄存器区(00H~1FH)

32个字节

4个工作寄存器组

每组8个工作寄存器

R0~R7

由RS1、RS0两位决定目前使用哪组工作寄存器

RS1

RS0

组号

0

0

0

0

1

1

1

0

2

1

1

3

方便快速保护现场

主程序(0组)

MOVR0,#12H;(00H)←12H

(程序中断)

INCR0

中断服务程序(2组)

PUSHPSW

SETBRS1

CLRRS0;bank2

MOVR0,#34H;(10H)←34H

POPPSW

RETI

工作寄存器的功能:

MOVR0,#30H

MOVA,@R0;间接寻址

寄存器与存储器的区别:

存储器:

容量大速度慢有地址

寄存器:

容量小速度快有名字

MCS-51

统一编址

速度一致

MOVA,R0;1byte

MOVA,00H;2bytes

片内数据存储器(高128B)

地址范围:

80H~0FFH

仅52子系列有

只可用间接寻址方式访问

MOVR0,#80H

MOVA,@R0;间接寻址

MOVA,80H;直接寻址SFR

特殊功能寄存器(SFR)

地址范围:

80H~0FFH

只可用直接寻址方式访问

21个51子系列

26个52子系列

离散分布

控制、管理各个功能模块(中断、定时器、串行口……)

控制寄存器

状态寄存器

数据寄存器

符号

寄存器名称

地址

ACC

累加器

0E0H

B

B寄存器

0F0H

PSW

程序状态字

0D0H

SP

堆栈指针

81H

DPL

数据指针低8位

82H

DPH

数据指针高8位

83H

P0

P0口寄存器

80H

P1

P1口寄存器

90H

P2

P2口寄存器

0A0H

P3

P3口寄存器

0B0H

IE

中断允许控制寄存器

0A8H

IP

中断优先控制寄存器

0B8H

TMOD

定时器方式选择寄存器

89H

TCON

定时器控制寄存器

88H

TL0

定时器0低8位

8AH

TH0

定时器0高8位

8CH

TL1

定时器1低8位

8BH

TH1

定时器1高8位

8DH

SCON

串行口控制寄存器

98H

SBUF

串行数据缓冲寄存器

99H

PCON

电源控制及波特率选择寄存器

87H

累加器ACC

(Accumulator)

具有特殊用途的8位寄存器

专门用来存放操作数或运算结果

3+5=?

MOVA,#3;A=3

ADDA,#5;A=3+5

通用寄存器B

(GeneralPurposeRegister)

8位

专门为乘法和除法设置的寄存器

3×5=?

MOVA,#3;A=3

MOVB,#5;B=5

MULAB;BA←A×B

程序状态字PSW

(ProgramStatusWord)

8位标志寄存器

用来存放指令执行后的有关状态

可按位寻址

D7

D0

CY

AC

F0

RS1

RS0

OV

-

P

CY进位标志位

OV溢出标志位

AC半进位位(辅助进位位)

二进制加法无符号数有符号数

11111111255-1

+)00000001+)1+)1

11111111

000000002560

CY=1最高进位位(进位标志位)

(无符号数运算溢出标志位)

CS=1次高进位位

AC=1半进位位(辅助进位位)

(用于BCD码调整)

OV=0溢出标志位=CY

CS

(有符号数运算溢出标志位)

F0用户位

RS1、RS0工作寄存器组

选择控制位

P奇偶标志位

偶校验

串行通信差错控制

注意标志位(状态位)和控制位区别

标志位(状态位)指示灯

由硬件系统根据运行状态自动置“1”或清“0”,供用户通过指令查询、判断,决定程序的执行顺序。

CY、AC、OV、P

控制位开关

由用户通过指令置“1”或清“0”,以控制相应的硬件功能模块。

RS0、RS1

TR1

TR0

标志位

硬件

软件

控制位

软件

硬件

 

写控制位:

SETBRS1;RS1=1

CLRRS0;RS0=0

判断标志位:

JBOV,Overflow

;若OV=1则跳转到Overflow

JNBOV,NOT_Overflow

;若OV=0则跳转到NOT_Overflow

堆栈指针SP

(StackPointer)

8位寄存器

专门用来存放堆栈的栈顶地址

能自动加1和减1

堆栈是一种按“后进先出”规律存取数据的存储区域

处理中断、子程序调用

栈区:

片内RAM低128B

不可对任意地址操作

堆栈的操作

压栈(入栈)PUSH

弹栈(出栈)POP

SP先加一,再入栈(向上生成)

复位后SP=07H

修改到SP=2FH

MOVSP,#2FH

数据指针DPTR

(DataPointer)

16位寄存器

由两个8位寄存器DPH和DPL拼装而成

用来存放16位地址。

用于访问程序存储器和片外数据存储器

访问程序存储器

MOVDPTR,#2000H

MOVA,#08H

MOVCA,@A+DPTR

访问片外数据存储器

MOVDPTR,#2008H

MOVXA,@DPTR

MOVA,#12H

MOVDPTR,#2008H

MOVX@DPTR,A

端口P0~P3

寄存器

端口

 

端口字节单元P1

引脚位P1.0

输出锁存、输入缓冲

MOVP1,#12H

MOVA,#12H

SETBP1.0

SETBACC.0

字节地址可被8整除的寄存器可按位寻址

最低位位地址与字节地址相同

可按位寻址的寄存器:

ABPSW

P0~P3……

不可按位寻址的寄存器:

SPDPTR……

地址的重叠与区分

片内程序存储器vs片外程序存储器

片外程序存储器

=0

片内程序存储器

=1

输入引脚

SETBEA

程序存储器vs片内数据存储器

vs片外数据存储器

程序存储器

MOVC

片内数据存储器

MOV

片外数据存储器

MOVX

例:

访问程序存储器

MOVDPTR,#0030H

MOVA,#0

MOVCA,@A+DPTR

MOVCA,0030H

访问片外数据存储器

MOVDPTR,#0030H

MOVXA,@DPTR

MOVXA,0030H

访问片内数据存储器

MOVR0,#30H

MOVA,@R0

or

MOVA,30H

片内数据存储器高128BvsSFR

高128B间接寻址方式

MOVR0,#80H

MOVA,@R0

SFR直接寻址方式

MOVA,P0

or

MOVA,80H

字节地址vs位地址

字节地址字节指令

INC30H

MOVA,30H

位地址位指令

CPL30H

MOVC,30H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1