《单片机存储器配置.ppt》由会员分享,可在线阅读,更多相关《单片机存储器配置.ppt(41页珍藏版)》请在第壹文秘上搜索。
1、12.6 89C51的存储器22.6.1 存储器概述MCS51系列单片机在物理上有4个存储器空间。程序存储器片内片外00000FFFF00000FFF数据存储器片内RAM扩展RAM00000FFFF0000 7FSRFRAM80H0FFH程序存储区,扩展数据存储区,内部数据存储区,专用寄存器区89C513MCS-52 的存储器配置MCS-52 还多了内部高128字节RAM程序存储器片内片外00000FFFF00001FFF数据存储器内RAMXRAM 00000FFFF0000 7FSRFRAM80H0FFH80H0FFH程序存储区,片外扩展数据存储区,内部数据存储区,专用寄存器区89C5242
2、.6.2 程序存储器程序存储器1程序存储空间程序存储空间可寻址的程序存储器空间:64KB;用途:存放程序,或者常数表格;地址范围:0000H0FFFFH。片内集成4KB FLASH存储器。52复位起始地址复位起始地址 复位完成后,程序计数器PC=0000H,因此,复位后程序从0000开始执行程序。3片内程序存储器片内程序存储器 依据不同的型号而不同。例如 8031没有内部程序存储器; 8751有4KB的EPROM程序存储器; AT89C51有4KB的FLASH作程序存储器; AT89C52有8KB的FLASH作程序存储器; AT89C55有20KB的FLASH作程序存储器; W78E58有32
3、KB的FLASH作程序存储器。64中断程序入口地址中断程序入口地址(1)程序存储器的低地址部分具有特殊的用途。它们是中断服务程序的入口地址。 基本51系统系列,00000030H之间. 现在有许多新的兼容系列,增强了中断管理能力,在这之后又增加了一些中断服务程序入口。(2)我们编写程序时,应该让出这一部分地址。 7基本51、52单片机中断服务程序入口地址表中断源入口地址备注复位0000H 系统复位后,程序入口外部中断0(INT0)0003H定时器0溢出中断000BH外部中断1(INT1)0013H定时器1溢出中断001BH串行通讯中断(UART0)0023H定时器2002BH8兼容扩展型号中断
4、服务程序入口地址表(1)中断源入口地址备注复位0000H 系统复位后,程序入口外部中断0(INT0)0003H定时器0溢出中断000BH外部中断1(INT1)0013H定时器1溢出中断001BH串行通讯中断(UART0)0023H定时器2002BH0033H*扩展串口1(UART1)003BHWinbond的W77E58特有*扩展外部中断(INT2)0043H*扩展外部中断(INT3)004BH*扩展外部中断(INT4)0053H*扩展外部中断(INT5)005BH*Watchdog Timer0063H9中断服务程序入口地址表(扩展型号2)中断源入口地址备注复位0000H 系统复位后,程序入
5、口外部中断0(INT0)0003H定时器0溢出中断000BH外部中断1(INT1)0013H定时器1溢出中断001BH串行通讯0中断(UART0)0023H定时器2002BHSPI0033HC8051F020SMBUS中断003BHADC00043H可编程计数器阵列004BH定时器30073H串行通信1(UART1)00A3H10可以看到:对于002BH以前的中断程序入口是标准的,但在此以后,则不同的生产厂有不同的定义,使用时需要参考生产厂的相关资料。资料的获取:一般都可以通过网络获得相关资料。最方便的是直接进入制造厂的网站,对于使用资料,是公开的。例如进入Atmel网站,选择芯片型号AT89
6、C52可以查找到相关资料;115. 如何留出中断向量区使用定位伪指令。各入口地址存放一条转移指令或子程序调用指令,而程序的主体部分存放在程序存储空间的其他位置、例如 ORG 0 ;定位复位入口;定位复位入口 LJMP START ;转主程序开始;转主程序开始 ORG 03H LJMP INT0 ;转中断;转中断0服务程序服务程序 ORG 0BH LJMP T0 ORG 13H LJMP INT1 ORG 1BH LJMP T1 ORG 0100HSTART: MOV SP,#70HINT0: PUSH ACC PUSH PSW POP PSW POP ACC RETIT0: PUSH ACC1
7、26 内、外部程序存储器的选择内、外部程序存储器的选择(1)有片内程序存储器)有片内程序存储器 如果EA=1,复位后优选择片内程序存储器。当PC超出片内寻址范围时,自动转到片外程序存储器。 EA=0,忽略片内程序存储器,直接寻址片外程序存储器。(2)无片内程序存储器)无片内程序存储器只能寻址片外程序存储器。此时应当使EA=0。13(3)片外程序存储器的扩展一般使用掉电不丢失数据的存储器作程序存储器,例如EPROM,EEPROM,FLASH等;P0口为外部存储器的数据/地址复用总线,地址信号需要外部锁存后接到存储器的低8位地址线上,数据信号不需要锁存,直接接到存储器的数据总线;P2为外部地址总线
8、高8位,不需要外部锁存。引脚ALE的信号可以作为低8位地址锁存控制信号。PSEN作为程序存储器的读控制信号。以32KB的EPROM为例,程序存储器扩展的框图:14片外程序存储器的扩展 以32KB*8为的EPROM为例。 设要求在第32KB空间扩展32KB程序存储器。 要扩展存储器,低8位地址总线需要在外部锁存。高8位地址信号不需要锁存。 地址锁存可以使用74LS3731574LS373是8D锁存器。有时标为LE1674LS373功能表表中:H高电平,L低电平,X任意;Z输出处于高阻状态;Q0维持原状态不变。当/OE=L,G=“1”时,输出随输入而变化, G=“0”,输出Q维持,不受输入端影响/
9、OE=H,输出处于高阻态。这样,将/OE接“0”,G接单片机的ALE,则当ALE=1时,P0输出的地址信号送到373保存,而当ALE=0时,P0的信号不影响373的输出低8位地址信号在外部被锁存。17EPROM存储器27256简介32K*8位EPROM存储器访问时间:170nS功能框图1827256外形与引脚19功能表EGVPPQ7Q0工作模式00Vcc数据输出读出01VccZ禁止输出1Vpp数据输入编程10Vpp数据输出校验00Vpp数据输出校验1XVccZ芯片没被选中20 由于在系统中只需要处于读出、或没选中状态,不需要编程与校验,因此,Vpp 始终接Vcc (+5V), E为片选信号,E
10、=0有效,芯片工作。在所选择的地址范围内,使E=0,对于00007FFFH,A15=0,8000H0FFFFH,A15=1。我们需要将存储器设计在低32KB地址空间,因此,可以直接将A15作为芯片选择信号:E=A15。 G 为读出控制信号,=0有效。程序存储器的读控制信号为PSEN,只要使G=PSEN就可满足要求。21片外程序存储器的扩展框图数据线、地址线接到存储器芯片的对应引脚上。P0.0P0.7ALEP2.0P2.7PSEND0D7A0A7A8A15A0A14EGA8A14D0D7Q0Q7G74LS37327256OEPSENA1522电路原理图D03Q02D14Q15D27Q26D38Q
11、39D413Q412D514Q515D617Q616D718Q719OE1LE11IC274LS373A0A2A4A6A7A5A3A1EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD101IC1AT89C52ALED0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D7A01
12、0A19A28A37A46A55A64A73A825A924A1021A1123A122A1326A1427CE20OE22VPP1D011D112D213D315D416D517D618D719VCC28IC327256VCCVCCPSENA15A8A9A10A11A12A13A14A15A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14D0D1D2D3D4D5D6D7ALEPSEN这里的LE就是373 的“G”232.6.3 数据存储器数据存储器数据存储器分为: 内部数据存储器 扩展数据存储器 两部分 241。内部数据存储器空间。内部数据存储器空间又分为多个不同的空间。
13、l 工作寄存器区: 4个,每个区 8个工作寄存器R0R7l 可位寻址的存储器区域l 普通数据存储器区l 专用寄存器(SFR)区 对于MCS-51系列单片机,它们都位于内部数据存储器地址空间(000FFH)。 25(1)工作寄存器区)工作寄存器区占用地址空间:占用地址空间:00H1FH 该区32字节,又分为4个寄存器区;每个区8个工作寄存器,R0,R1,R7 通过专用寄存器PSW的RS1,RS0两位选择。 系统复位时,RS1,RS0=0,0, 选择0区, 地址:00H07HRS1RS0工作寄存器区0 00区011区102区113区RS1,RS0可以按位操作。例如 SETB RS0 ;RS0置“1
14、” CLR RS1 ;RS1清“0” 该区域除了作为工作寄存器使用外,还可以作为一般的RAM使用。26(2)位寻址区 地址20H2FH为可位寻址的存储区,它的每一位都有一个位地址,可以进行位操作,使用非常方便。位编号位编号地址地址D7D6D5D4D3D2D1D02FH7F7E7D7C7B7A79782FH77767574737271702EH171615141312111022H0F0E0D0C0B0A090821H070605040302010020H27例如,需要用一个标志位来保存阀门的状态:关闭=0,打开=1,则可以只用一个为寻址单元。例如用02位(20字节的D2位)。位操作指令: SE
15、TB (位地址) CLR (位地址) MOV C,(位地址) MOV (位地址),C还有许多位操作指令,在指令系统章节中再讨论。例如:SETB 02H ;02为置“1” MOV C,03H ;C03位的状态 MOV 06H,C ;06Hc的状态 28为了方便程序的阅读与维护,通常利用伪指令将地址用一个符号来表示。例如:ABC BIT 03H ;位变量定义,位变量ABC=03H DEF EQU 03H ;通用变量定义,变量DEF=03H定义了符号地址后,在指令中就可以直接使用符号地址例如: SETB ABC 与 SETB 03H 是等价的。该区域除了作为位操作区域外,还可以作为普通的RAM使用。
16、29(3)一般)一般RAM区区30H7FH内部RAM的30H7FH为为一般的RAM区。寻址方式:直接寻址,寄存器间接寻址。 例如:MOV A, 30H ;直接寻址 例如:MOV A,R0 ;寄存器间接寻址可以设为堆栈区,利用堆栈操作指令访问。 PUSH 30H POP 30H整个00H07FH 都可以作为一般的RAM使用。 对该区域(00H07FH)的RAM访问,可以使用直接寻址,也可以使用寄存器间接寻址30(4)高)高128字节空间字节空间 对于51子系列,它只是专用寄存器(又叫特殊功能寄存器SFR)区。专用寄存器在后面讨论。 对于52子系列,80H0FFH实际上有两个独立的物理空间:专用寄存器空间和高128字节RAM空间。片内0000 7FSRFRAM80H0FFH80H0FFH 通过不同的寻址方式来区分是对SFR还是对RAM操作:SFR:使用直接寻址方式。高128字节RAM:使用寄存器间接寻址方式。地址寄存器只能选择R0或R131例如,要向P1端口寄存器写数据 05H:MOV 90H,#05H ;P1数据缓冲区地址是90H。(注:P1端口可以使用符号地址P1,MOV P1,#05