25
3 MCS-51 存存存存存存存存

3 MCS-51 存储器和位处理器

Embed Size (px)

DESCRIPTION

3 MCS-51 存储器和位处理器. 1. 概论. 1 )随机存取存储器 RAM 双极型 RAM MOS 型 RAM (静态 RAM 、动态 RAM ) 2 )只读存储器 ROM 掩膜只读存储器 ROM 可编程序只读存储器 PROM 可擦写只读存储器 EPROM (紫外线擦写)、 E 2 PROM (电擦写). 2. MCS-51 存储器结构. 【 存储器映像 】. 1 )程序存储器 (片内 0000H ~ 0FFFH ). - PowerPoint PPT Presentation

Citation preview

Page 1: 3  MCS-51 存储器和位处理器

3 MCS-51 存储器和位处理器

Page 2: 3  MCS-51 存储器和位处理器

1. 1. 概论概论

11 )随机存取存储器)随机存取存储器 RAMRAM 双极型双极型 RAMRAM MOSMOS 型型 RAMRAM (静态(静态 RAMRAM 、动态、动态 RARA

MM ))22 )只读存储器)只读存储器 ROMROM 掩膜只读存储器掩膜只读存储器 ROMROM 可编程序只读存储器可编程序只读存储器 PROMPROM 可擦写只读存储器 可擦写只读存储器 EPROMEPROM (紫外线擦(紫外线擦

写)、写)、 EE22PROMPROM (电擦写)(电擦写)

Page 3: 3  MCS-51 存储器和位处理器

2. MCS-512. MCS-51 存储器结构存储器结构【存储器映像】

FFFFH

1000H

0000H

0FFFH

00H

FFH

......

0FFFH

0000H 0000H

FFFFH外部程序

存储器

(60KB)

内部程序

存储器(EA=1)(4KB)

外部程序

存储器(EA=0)(4KB)

外部数据存储器

(64KB)......

...

......

......

特殊功能寄存器

内部数据寄存器

7FH80H

......

程序存储器 内部数据存储器

外部数据存储器

Page 4: 3  MCS-51 存储器和位处理器

11 )程序存储器)程序存储器(片内(片内 0000H0000H ~~ 0FFFH0FFFH ))

80518051 单片机内部有单片机内部有 4KB4KB 的掩膜的掩膜 ROMROM 、、 87518751 单片机单片机内部有内部有 4KB4KB 的的 EPROMEPROM ,而,而 80318031 内部没有程序存储器,内部没有程序存储器,必须外接程序存储器。必须外接程序存储器。

当 引脚接高电平时,当 引脚接高电平时, CPUCPU 将首先访问内部程序将首先访问内部程序存储器,在存储器,在 PCPC 超过超过 0FFFH0FFFH 单元时,单元时, CPUCPU 将自动转入访将自动转入访问外部程序存储器。问外部程序存储器。

当 引脚接低电平时,所有取指操作均指向外部程当 引脚接低电平时,所有取指操作均指向外部程序存储器。对于序存储器。对于 8031/80328031/8032 , 必须接低电平(接地)。, 必须接低电平(接地)。

从从 0003H0003H ~~ 0032H0032H 单元被保留专用于中断服务程序。单元被保留专用于中断服务程序。

22 )数据存储器)数据存储器 MCS-51MCS-51 系列单片机数据存储器分内部数据存储器(即系列单片机数据存储器分内部数据存储器(即片内片内 RAMRAM )和外部数据存储器(即片外)和外部数据存储器(即片外 RAMRAM )。)。

EA

EA

EA

Page 5: 3  MCS-51 存储器和位处理器

①①工作寄存器区工作寄存器区

一共一共 44 组,编号:工作寄存器组组,编号:工作寄存器组 00 ~~ 44

一组一组 88 个字节,用同一组编号个字节,用同一组编号 R0R0 ~~ R7R7 表示,某一时刻表示,某一时刻只能选用一组作为当前工作寄存器,由只能选用一组作为当前工作寄存器,由 RS1RS1 ,, RS0RS0 决定。决定。

地址:地址: 00H00H ~~ 1FH1FH (( 3232 个字节)个字节)

两种使用方法:两种使用方法:

MOV AMOV A ,, R0R0 或 或 MOV AMOV A ,, 00H00H

A.A. 内部数据存储器内部数据存储器低低 128128 单元:单元: 00H00H ~~ 7FH7FH

高高 128128 单元:单元: 80H80H ~~ FFHFFH

(( 11 )内部数据存储区低)内部数据存储区低 128128 单元单元

Page 6: 3  MCS-51 存储器和位处理器

②② 位寻址区位寻址区字节地址:字节地址: 20H20H ~~ 2FH2FH (( 1616 个字节)个字节)位地址:位地址: 00H00H ~~ 7FH7FH (为位操作指令准备,是位处理(为位操作指令准备,是位处理

器的数据存储空间)器的数据存储空间)例如:清除例如:清除位地址位地址 00H00H 单元单元

CLR CLR 00H00H

而对片内的而对片内的 00H00H 字节字节清零,则清零,则MOV MOV 00H00H ,#,# 00H00H

或或 ANLANL 00H00H ,#,# 00H00H

③③ 用户用户 RAMRAM 区区供用户使用的一般供用户使用的一般 RAMRAM 区,区, 30H30H ~~ 7FH7FH 。。字节地址使用,堆栈区一般常开辟在这个区内。字节地址使用,堆栈区一般常开辟在这个区内。(看下图)(看下图)

Page 7: 3  MCS-51 存储器和位处理器

【存储器区的低【存储器区的低 128128 字节】字节】

Page 8: 3  MCS-51 存储器和位处理器

【特殊功能寄存器【特殊功能寄存器 SFRSFR 】】 在高地址段在高地址段 128128 ~~ 255255共共 128128 个字节单元,特殊个字节单元,特殊功能寄存器只占一部分,功能寄存器只占一部分,另一部分为空。对于非另一部分为空。对于非 SFSFRR 不能进行读写操作;对不能进行读写操作;对于于 80528052 两部分共存,依靠两部分共存,依靠不同的寻址方式实现区别不同的寻址方式实现区别访问。访问。右图给出了可直接位寻址右图给出了可直接位寻址的的 SFRSFR 的位地址空间的位地址空间→→

可参见前:可参见前: PCPC 指针、指针、 AA 、、BB 、、 PSWPSW 、、 DPTRDPTR 等等等等 。。

(( 22 )内部数据存储区)内部数据存储区高高 128128 单元单元

Page 9: 3  MCS-51 存储器和位处理器

B.B. 外部数据存储器外部数据存储器

由于由于 MCS-51MCS-51 系列单片机内部数据存储器只有系列单片机内部数据存储器只有 128128 字字

节,往往不够用,这就需要扩展外部数据存储器,外部数节,往往不够用,这就需要扩展外部数据存储器,外部数

据存储器最多可扩至据存储器最多可扩至 64KB64KB 。外部数据存储器的访问地址。外部数据存储器的访问地址

可由工作寄存器 可由工作寄存器 RiRi (( 88 位)或数据指针位)或数据指针 DPTRDPTR (( 1616

位)提供,前者的寻址空间位)提供,前者的寻址空间 256256 字节,后者可寻址字节,后者可寻址 64KB64KB 。。

RiRi 由由 P0P0 口输出;口输出; DPTRDPTR 的的 DPLDPL 由由 P0P0 口输出,口输出, DPHDPH 由由

P2P2 口输出。读口输出。读 // 写操作的数据由写操作的数据由 P0P0 口输入口输入 // 输出,输出, P0P0 口口

为分时复用。为分时复用。

Page 10: 3  MCS-51 存储器和位处理器

数据存储器和程序存储器分开,各有自己的寻数据存储器和程序存储器分开,各有自己的寻址系统、控制信号和功能。址系统、控制信号和功能。

存储器有内外之分。存储器有内外之分。分开的存储结构更有效地使用较大而固定的程分开的存储结构更有效地使用较大而固定的程

序和频繁地处理大量的数据或变量。序和频繁地处理大量的数据或变量。

MCS-51MCS-51 单片机是由芯片内存储器和芯片外扩展单片机是由芯片内存储器和芯片外扩展存储器构成单片机应用系统的整个存储系统。(参见存储器构成单片机应用系统的整个存储系统。(参见存储器映像图))

33 )) MCS-51MCS-51 单片机系统的存储器结构特点单片机系统的存储器结构特点

Page 11: 3  MCS-51 存储器和位处理器

【存储器映像】

FFFFH

1000H

0000H

0FFFH

00H

FFH

......

0FFFH

0000H 0000H

FFFFH外部程序

存储器

(60KB)

内部程序

存储器(EA=1)(4KB)

外部程序

存储器(EA=0)(4KB)

外部数据存储器

(64KB)......

...

......

......

特殊功能寄存器

内部数据寄存器

7FH80H

......

程序存储器 内部数据存储器

外部数据存储器

Page 12: 3  MCS-51 存储器和位处理器

3. MCS-513. MCS-51 的寻址方式的寻址方式

11 )立即寻址)立即寻址指令中直接给出操作数的寻址方式。立即操作数用前面指令中直接给出操作数的寻址方式。立即操作数用前面

加有“加有“ #”#” 号的号的 88 位或位或 1616 位数来表示。位数来表示。例如:例如:88 位立即数操作位立即数操作MOV AMOV A ,, #data#data

MOV AMOV A ,, #3AH#3AH

1616 位立即数操作 位立即数操作 MOV DPTRMOV DPTR ,, #data16#data16

寻址:在单片机的存储空间中寻找指令规定的操作数据的寻址:在单片机的存储空间中寻找指令规定的操作数据的地址,并将操作数取出来。在一条指令中,通常是根据指地址,并将操作数取出来。在一条指令中,通常是根据指令的源操作数来决定寻址方式的。令的源操作数来决定寻址方式的。

注意:符号“注意:符号“ #”#”表明其后跟的是立表明其后跟的是立即数即数 ,, 立即数——立即数——就是数字量本身。就是数字量本身。

Page 13: 3  MCS-51 存储器和位处理器

22 )直接寻址)直接寻址指令中操作数直接以单元地址的形式给出,就称之为直指令中操作数直接以单元地址的形式给出,就称之为直

接寻址。能进行直接寻址的存储空间有接寻址。能进行直接寻址的存储空间有 SFRSFR 寄存器和内部寄存器和内部数据数据 RAMRAM 。。

例如:例如:MOVMOV PSWPSW ,, # 20H # 20H ; (; ( PSWPSW )←)← #20H#20H

MOVMOV AA ,, 30H 30H ;(;( AA )←()←( 30H30H ))规定:访问特殊功能寄存器 SFR 只能采用直接寻址方式。

MOV A, SP ; (A) ←(SP)

MOV A, 81H ; (A) ←(SP)

MOV P1, #5AH ; (P1)←(#5AH)

MOV 90H,#5AH ; (P1)←(#5AH)

MOV B, 30H ; (B) ←(30H)

相同

相同

SFR 的地址表见书 P41

Page 14: 3  MCS-51 存储器和位处理器

33 )寄存器寻址)寄存器寻址操作数在寄存器中。因此指定了寄存器就能得到操作数。操作数在寄存器中。因此指定了寄存器就能得到操作数。

在寄存器寻址方式的指令中以符号名称来表示寄存器。在寄存器寻址方式的指令中以符号名称来表示寄存器。寄存器包括:寄存器包括:当前工作寄存器组 当前工作寄存器组 R0R0 ~~ R7 R7 或 或 AA 、、 B B 、、 DPTRDPTR 等等 例如:例如:

MOVMOV AA ,, R0R0

CLR CLR AA ;(;( AA )←)← 00

INC INC DPTRDPTR ;(;( DPTRDPTR )←()←( DPTRDPTR )) +1+1

ADDADD R5R5 ,, #20H #20H ;(;( R5R5 )←)← #20H+#20H+ (( R5R5 ))

Page 15: 3  MCS-51 存储器和位处理器

44 )寄存器间接寻址)寄存器间接寻址以寄存器中内容为地址,以该地址中内容为操作数的以寄存器中内容为地址,以该地址中内容为操作数的

寻址方式。即操作数是通过寄存器间接得到的。寻址方式。即操作数是通过寄存器间接得到的。间接寻址的存储器空间包括:内部数据间接寻址的存储器空间包括:内部数据 RAMRAM 和外部数和外部数

据据 RAMRAM 。。例如例如 : : (与寄存器寻址比较)(与寄存器寻址比较)MOV AMOV A ,, @R0 @R0 ;; R0R0 == 65H65H ,内部(,内部( 65H65H ))→→(( AA ))MOVX AMOVX A ,, @R1 @R1 ;; R1R1 == 10H10H ,外部(,外部( 10H10H )→()→( AA ))MOVX @DPTRMOVX @DPTR ,, AA ;外部;外部 RAMRAM (((( DPTRDPTR ))←))←(( AA ))注意注意::11 )“)“间接间接”表示某寄存器中的“”表示某寄存器中的“内容内容”只是一个“”只是一个“单元地单元地

址址”,这个”,这个地址单元中地址单元中存放的数据存放的数据才是要找的“才是要找的“操作数操作数”。”。22 )符号“)符号“ @@”” 表示“表示“在…在…”,其含义与读音皆同“”,其含义与读音皆同“ atat”” 。。

Page 16: 3  MCS-51 存储器和位处理器

MOV A,@R0MOV A,@R0 间接寻址间接寻址

MOVX AMOVX A ,, @R1@R1 间接寻间接寻址 址

MOVX @DPTRMOVX @DPTR ,, AA 间间接寻址接寻址

30H20C1H

30H

片外RAM

ACC

0000H

FFFFH

寄存器间接寻址方式

20C1HDPTR

R1 10H

45H10H

45H

片外低256字节RAM

ACC

00H

FFH

寄存器间接寻址方式

R0 65H

47H65H

47H

片内低128字节RAM

ACC

00H

7FH

寄存器间接寻址方式

Page 17: 3  MCS-51 存储器和位处理器

寄存器间接寻址方式的寻址空间寄存器间接寻址方式的寻址空间①① 内部内部 RAMRAM 低低 128128 单元单元

间址寄存器:间址寄存器: R0 R0 或 或 R1R1

通用形式为:通用形式为: MOVMOV 指令及指令及 @Ri@Ri (( ii == 00 或或 11 ))②② 外部外部 RAM 64KRAM 64K

间址寄存器:间址寄存器: DPTRDPTR

通用形式为:通用形式为: MOVXMOVX 指令及指令及 @DPTR@DPTR

例如:例如: MOVX AMOVX A ,, @DPTR@DPTR

③③ 外部外部 RAMRAM 的低的低 256256 单元单元间址寄存器:间址寄存器: R0 R0 或 或 R1R1

通用形式为:通用形式为: MOVXMOVX 指令及指令及 @Ri@Ri (( ii == 00 或或 11 ))例如:例如: MOVX AMOVX A ,, @R0@R0

④④ 堆栈操作指令(堆栈操作指令( PUSHPUSH 和和 POPPOP ):以堆栈指针):以堆栈指针 SPSP 作为作为间址寄存器间址寄存器

Page 18: 3  MCS-51 存储器和位处理器

在在 5151 系列系列单片机中访问特殊功能寄存器单片机中访问特殊功能寄存器 SFRSFR 只能只能采用直接寻址方式采用直接寻址方式的原因的原因:: SFRSFR 分布在分布在 80H80H ~~ 0FFH0FFH范围内范围内,而,而 5252 系列系列单片机有单片机有 256256 字节的片内字节的片内 RAM,RAM,其中的其中的 80H80H ~~ 0FFH0FFH 的的 RAMRAM 与与 SFRSFR 所占所占地址重叠地址重叠。。

MOV A, 90HMOV A, 90H 等效于 等效于 MOV A, P1MOV A, P1 属直接寻址 属直接寻址 MOV A, MOV A, @@R0R0 ;; [[ 事先已知 事先已知 (R0) = #90H ] (R0) = #90H ] 执行的操作:执行的操作:A ←(90H)A ←(90H) 属寄存器间接寻址属寄存器间接寻址 , , 随意写的指随意写的指令如:令如: MOV A, 85HMOV A, 85H 则是非法的!则是非法的!(( 85H85H 单元作单元作为为 SFRSFR 是不可用的)是不可用的)

于是规定: 于是规定: 80H80H ~~ 0FFH0FFH 范围内的范围内的 RAMRAM 只能用只能用寄存寄存器间接寻址器间接寻址方式,而方式,而 SFRSFR 只能用只能用直接寻址直接寻址方式。从方式。从而解决了地址冲突的问题。例如:而解决了地址冲突的问题。例如:

Page 19: 3  MCS-51 存储器和位处理器

存储器配置存储器配置((片内片内 RAMRAM )) 8051 片内 RAM 128 字节( 00H—7FH) 8052片内 RAM 256字节( 00H—0FFH)

00H

20H

2FH

7FH

1FH

30H

80H

FFH

52 子系列才有

的 RAM 区

普通 RAM 区

位寻址区工作寄存器区

SFR 分布在80H-FFH

其中 92 个位可位寻址

80H

FFH

8051 128 字节

8052 256 字节

只能直接寻址

只能寄存器间接寻址

Page 20: 3  MCS-51 存储器和位处理器

55 )变址寻址)变址寻址(基址寄存器(基址寄存器 ++ 变址寄存器变址寄存器间接寻址间接寻址))变址寻址只能对变址寻址只能对程序存储器程序存储器中数据进行操作。由于程序存储器是只中数据进行操作。由于程序存储器是只

读的,因此变址寻址只有读操作而无写操作,在指令符号上采用读的,因此变址寻址只有读操作而无写操作,在指令符号上采用 MOVCMOVC的形式(如图所示)。的形式(如图所示)。

例如:例如: MOVC AMOVC A ,, @ A+DPTR @ A+DPTR ;; A←A← (( A+DPTRA+DPTR ))又如,又如, MOVC AMOVC A ,, @ A+PC @ A+PC ;; A←A← (( A+PCA+PC ) ) 基址寄存器分别是基址寄存器分别是 DPTRDPTR 和和 PCPC ,变址寄存器是,变址寄存器是 AA 。。

变址寻址示意图变址寻址示意图

7FH0154H

(54H)

程序存储区ROM

ACC

0000H

FFFFH

变址寻址方式

0100HDPTR

ALU

7FH

注:注:1.1. 特点:动态寻址 特点:动态寻址 2.2. 用途:散转、查表 用途:散转、查表 3.3. 可寻址范围:以可寻址范围:以 PCPC 为为基址,可寻址当前基址,可寻址当前 PCPC 指指针后的针后的 256256 字节;以字节;以 DPTDPTRR 为基址,可寻址为基址,可寻址 64K64K 字字节空间的任意单元。节空间的任意单元。

Page 21: 3  MCS-51 存储器和位处理器

66 )相对寻址)相对寻址以当前程序计数器以当前程序计数器 PCPC 的内容为基础,加上指令给出的一的内容为基础,加上指令给出的一

字节补码数(偏移量)形成新的字节补码数(偏移量)形成新的 PCPC 值的寻址方式。值的寻址方式。相对寻址用于修改相对寻址用于修改 PCPC 值,主要用于实现程序的转移。值,主要用于实现程序的转移。转移的目标地址计算公式:转移的目标地址计算公式:目的地址=转移指令地址字节数+目的地址=转移指令地址字节数+ rel rel

(( relrel :: -128-128 ~~ 127127 ))例如例如 : JC 75H : JC 75H ;; PC←PC+2+75HPC←PC+2+75H 地址地址

75H1000H

程序存储器ROM

ALU1002H1001H

1077H

PC

PC

40H

(PC)=1002Hrel=75H

+1

+1

JC rel

1077H

在实际编程中,在实际编程中,““ rel” rel” 通通常用标号代替常用标号代替

Page 22: 3  MCS-51 存储器和位处理器

77 )位寻址)位寻址查寻片内查寻片内 RAMRAM 单元中的单元中的 20H20H ~~ 2FH2FH 和允许进行位操作和允许进行位操作

的专用寄存器中的位地址,从该地址中取出位数据进行操的专用寄存器中的位地址,从该地址中取出位数据进行操作。作。

位寻址其实是一种直接寻址方式,不过其地址是位地址。位寻址其实是一种直接寻址方式,不过其地址是位地址。例如:例如:SETB 10H SETB 10H

;将;将 10H10H 位置位置 11 【若【若 22H22H 单元中存放着数据单元中存放着数据 40H40H ,, 2222HH 单元的单元的 DDoo 位的位地址为位的位地址为 10H10H ,执行上述指令后(,执行上述指令后( 2222

HH )) =41H=41H 】】又如:又如:MOV 32HMOV 32H ,, C C ;; 32H←32H← 进位位进位位 CC

ORL C ORL C ,, 32H 32H ;; C←C 32H∨C←C 32H∨

Page 23: 3  MCS-51 存储器和位处理器

位寻址的寻址范围位寻址的寻址范围①① 内部内部 RAMRAM 中的位寻址区:中的位寻址区:

单元地址位单元地址位 20H20H ~~ 2FH2FH ,位地址是,位地址是 00H00H ~~ 7FH7FH

②② 专用寄存器的可寻址位专用寄存器的可寻址位可供位寻址的专用寄存器供由可供位寻址的专用寄存器供由 1111 个,共由寻址位个,共由寻址位 8383 位。位。一个专用寄存器的寻址位在指令中的表示方法:一个专用寄存器的寻址位在指令中的表示方法:

I.I. 直接使用位地址直接使用位地址II.II. 使用位名称使用位名称III.III.单元地址加位数单元地址加位数IV.IV. 专用寄存器符号加位数专用寄存器符号加位数V.V. 用户自定义的符号地址用户自定义的符号地址

例如:专用寄存器中的例如:专用寄存器中的 PSW.5PSW.5 位位ⅰⅰ.. SERB D5H SERB D5H .ⅲ.ⅲ SETB D0.5HSETB D0.5H

ⅱⅱ.. SETB F0 SETB F0 .ⅳ.ⅳ SETB PSW.5SETB PSW.5

Page 24: 3  MCS-51 存储器和位处理器

片内 RAM 中有 128 个位可按位寻址的位,位地址: 00H—7FH分布在: 20H—2FH单元;

另外,在 SFR 中还有 92个位可按位寻址

00H

20H

2FH

7FH

1FH

30H

80H

FFH

52 子系列才有

的 RAM 区

普通 RAM 区

位寻址区工作寄存器区

27H

22H

21H

20H

26H

24H

25H

23H

28H

07 06 05 04 03 02 01 00

0F 0E 0D 0C 0B 0A 09 08

17 16 15 14 13 12 11 10

1F 1E 1D 1C 1B 1A 19 18

27 26 25 24 23 22 21 20

2F 2E 2D 2C 2B 2A 29 28

37 36 35 34 33 32 31 30

3F 3E 3D 3C 3B 3A 39 38

47 46 45 44 43 42 41 40

2FH 7F 7E 7D 7C 7B 7A 79 78

位地址

总共128个可按位寻址的位

单元地址

17

D7 D6 D5 D4 D3 D2 D1 D0

Page 25: 3  MCS-51 存储器和位处理器

4. 4. 布尔(位)处理器布尔(位)处理器MCS-51MCS-51 的位处理器包含位累加器的位处理器包含位累加器 CyCy 、位寻、位寻

址寄存器、位寻址址寄存器、位寻址 I/OI/O 口、位寻址内部口、位寻址内部 RAMRAM 等等。等等。位操作指令能对内部位操作指令能对内部 RAMRAM 的的 128128 位(位( 20H20H ~~

2FH2FH )和部分专用、特殊功能寄存器进行直接位)和部分专用、特殊功能寄存器进行直接位寻址。寻址。

对每一个可位寻址的位,布尔(位)处理器能对每一个可位寻址的位,布尔(位)处理器能实现置位、清零、求反、传送、判调和逻辑运算实现置位、清零、求反、传送、判调和逻辑运算等操作。等操作。