AT89S51 单片机的内部 RAM 的位寻址空间有 128 位???

AT89S51存储器的结构
21:53:51来源: eefocus 关键字:&&&&
& & &单片机的特点之一是将程序存储器和数据存储器分开(称为哈佛结构),并有各自的对这两个不同的存储器空间的访问指令。    AT89S51的存储器空间可划分为如下4类。    1.程序存储器空间&& && & & 单片机能够按照一定的次序工作是由于程序存储器中存放了经调试正确的程序。程序存储器可以分为片内和片外两部分。    AT89Ssl单片机的片内程序存储器为4 KB的Flash存储器,编程和擦除完全是电气实现,且速度快。可使用通用的编程器对其编程,也可在线编程。    当AT89S51片内的4 KB的Flash存储器不够用时,用户可在片外扩展程序存储器,最多可扩展至64 KB。    2.数据存储器空间& & & 数据存储器空间分为片内与片外两部分。    AT89S51单片机内部有128 B的RAM(增强型的52子系列为256 B),用来存放可读/写的数据。    当AT89S51的片内RAM不够用时,又给用户提供了在片外可扩展至64 KB RAM的功能。至于究竟扩展多少RAM,则根据用户实际需要来定。    3.特殊功能寄存器(SFR,Special Function Register)& & & 特殊功能寄存器实际上是AT89S51片内各功能部件的控制寄存器及状态寄存器。SFR综合反映了整个单片机基本系统内部实际的工作状态及工作方式。    4.位地址空间& & & AT89S51单片机内共有211个可寻址位,构成了位地址空间。它们位于内部RAM(共128位)和特殊功能寄存器区(共83位)中。    程序存储器空间    程序存储器是只读存储器(ROM),用于存放程序和表格之类的固定常数。AT89S51单片机的片内程序存储器为4 KB的Flash存储器,地址范围为0000H~0FFFH。AT89S51有16位地址线,可外扩的程序存储器空间最大为64KB,地址范围为0000H~FFFFH。片内与片外扩展的程序存储器在使用时应注意以下问题:    (1)整个程序存储器空间可以分为片内和片外两部分,CPU究竟是访问片内的还是片外的程序存储器,可由EA(的反)引脚上所接的来确定。    EA(的反)引脚接高电平时,CPU从片内OOOOH开始取指令,当PC值没有超出OFFFH(0000H~0FFFH为片内4 KB的Flash存储器的地址范围)时,CPU只访问片内的Flash程序存储器,当PC值超出0FFFH会自动转向读取片外程序存储器空间1000H~FFFFH内的程序。    EA(的反)引脚接地时,单片机只能执行片外程序存储器(地址范围为0000H~FFFFH)中的程序。    CPU不理会片内4 KB的Flash存储器(地址范围0000H~0FFFH)。    (2)程序存储器的某些单元被固定用于各中断源的中断服务程序的入口地址。    64 KB程序存储器空间中有5个特殊单元分别对应于5个中断源的中断服务程序的人口地址,见表2-3。AT89 S51复位后,程序存储器地址指针PC的内容为OOOOH,程序从程序存储器中的OOOOH地址开始执行。一般在该单元存放一条跳转指令,跳向主程序的入口地址。    表2-3 5个中断源的中断入口地址    通常在这5个中断入口地址处都放一条跳转指令跳向对应的中断服务子程序,而不是直接存放中断服务子程序。这是因为两个中断入口间隔仅有8个单元,如果这8个单元存放中断服务子程序,往往是不够用的,所以中断入口地址处都放一条跳转指令,来跳向对应的中断服务子程序。    数据存储器空间    该空间分为片内与片外两部分。    1.片内数据存储器& & & AT89S51的片内数据存储器(RAM)共有128个单元,字节地址为OOH~7FH。图2-4为AT89S51片内数据存储器的结构。    地址为00H~1FH的32个单元是4组通用工作寄存器区,每个区包含8B的工作寄存器,编号为R7~RO。用户可以通过指令改变特殊功能寄存器PSW中的RS1、RSO这两位来切换当前选择的工作寄存器区。    地址为20H~2FH的16个单元的128位可进行位寻址,也可以进行字节寻址。    地址为30H~7FH的单元为用户RAM区,只能进行字节寻址,用于存放数据以及作为堆栈区使用。    2.片外数据存储器& & & 当片内128B的RAM不够用时,需要外扩数据存储器,AT89S51最多可外扩64KB的RAM。注意,片内RAM与片外RAM两个空间是相互独立的,片内RAM与片外RAM的低128B的地址是相同的,但由于使用的是不同的访问指令,所以不会发生冲突。    特殊功能寄存器    AT89S51中的CPU对片内各功能部件的控制是采用特殊功能寄存器集中控制方式。特殊功能寄存器(SFR)的单元地址映射在片内RAM的80H~FFH区域中,共有26个,离散地分布在该区域中,表2-4是SFR的名称及其分布。其中有些SFR还可以进行位寻址,其位地址已在表2-4中列出。& & & 表2-4 SFR的名称及其分布    与AT89C51相比,新增加的5个SFR是:DPIL、DPIH、AUXR、AUXR1和WDTRST,已在表2-4中标出。    从表2-4中可以发现,凡是可以进行位寻址的SFR,其字节地址的末位只能是OH或8H。    另外,若读/写没有定义的单元,将得到一个不确定的随机数。    SFR块中的累加器A和程序状态字寄存器PSW已在前面介绍过,下面简单介绍SFR块中的某些SFR。    1.堆栈指针SP    堆栈指针SP的内容指示出堆栈顶部在内部RAM块中的位置。它可指向内部RAM OOH~7FH的任何单元。AT89S51的堆栈结构属于向上生长型的堆栈(即每向堆栈压人1个字节数据时,SP的内容自动增1)。单片机复位后,SP中的内容为07H,使得堆栈实际上从08H单元开始,考虑到08H~1FH单元分别是属于1~3组的工作寄存器区,若在程序设计中用到这些工作寄存器区,最好在复位后且运行程序前,把SP值改置为60H或更大的值,以避免堆栈区与工作寄存器区发生冲突。    堆栈主要是为子程序调用和中断操作而设立的。堆栈的具体功能有两个:保护断点和现场保护。    (1)保护断点。因为无论是子程序调用操作还是中断服务子程序调用操作,最终都要返回主程序。因此,应预先把主程序的断点在堆栈中保护起来,为程序的正确返回做准备。    (2)现场保护。在单片机执行子程序或中断服务子程序时,很可能要用到单片机中的一些寄存器单元,这会破坏主程序运行时这些寄存器单元中的原有内容。所以在执行子程序或中断服务程序之前,要把单片机中有关寄存器单元的内容保存起来,送入堆栈,这就是所谓的“现场保护”。    堆栈的操作有两种:一种是数据压入(PUSH)堆栈,另一种是数据弹出(POP)堆栈。每次当一个字节数据压人堆栈以后,SP自动加1;一个字节数据弹出堆栈后,SP自动减1。例如,(SP)=60H,CPU执行一条子程序调用指令或响应中断后,PC内容(断点地址)进栈,PC的低8位PCL的内容压人到61H单元,PC的高8位PCH的内容压人到62H,此时,(SP)=62H。    2.寄存器B    寄存器B是为执行乘法和除法操作设置的。在不执行乘、除法操作的情况下,可把它当作一个普通寄存器来使用。    乘法中,两个乘数分别在A、B中,执行乘法指令后,乘积存放在BA寄存器对中。B中放乘积的高8位,A中放乘积的低8位。    除法中,被除数取自A,除数取自B,商存放在A中,余数存放于B中。    3.AUXR寄存器    AUXR是辅助寄存器,其格式如图2-5所示。& & & 图中:    DLE:ALE的禁止/允许位。    DISALE=0,ALE有效,发出恒定脉冲。    DISALE=1,ALE仅在CPU执行MOVC和MOVX类指令时有效,不访问外部存储器时,ALE不输出脉冲信号。    DISRTO:禁止/允许WDT溢出时的复位输出。    DISRTO=0,WDT溢出时,在RST引脚输出一个高电平脉冲。    DISRTO=1,RST引脚仅为输入脚。    WDIDLE:WDT在空闲模式下的禁止/允许位。    WDIDLE=0,WDT在空闲模式下继续计数。    WDIDLE=1,WDT在空闲模式下暂停计数。    4.数据指针DPTRO和DPTR1    DPTRO和DPTR1是双数据指针寄存器。为了便于访问数据存储器,AT89S51设置了两个数据指针寄存器。DPTRO为AT89C51单片机原有的数据指针,DPTR1为AT89S51新增加的数据指针。AUXR1的DPS位用于选择这两个数据指针。当DPS=0时,选用DPTRO;当DPS=1时,选用DPTR1。AT89C51复位时,默认选用DPTRO。    DPTRO(或DPTR1)是一个16位的SFR,其高位字节寄存器用DPOH(或DPIH)表示,低位字节寄存器用DPOL(或DPIL)表示。DPTRO(或DPTR1)既可以作为一个16位寄存器使用,也可以作为两个独立的8位寄存器DPOH(或DPIH)和DPOL(或DPIL)使用。    5.AUXR1寄存器    AUXR1是辅助寄存器,其格式如图2-6所示。    图中:    DPS:数据指针寄存器选择位。    DPS=0,选择数据指针寄存器DPTRO。    DPS=1,选择数据指针寄存器DPTR1。    6.看门狗定时器WDT    看门狗定时器WDT包含一个14位计数器和看门狗定时器复位寄存器(WDTRST)。当CPU由于干扰,程序陷入死循环或“跑飞”状态时,看门狗定时器WDT提供了一种使程序恢复正常运行的有效手段。    有关WDT在抗干扰设计中的应用以及低功耗模式下运行的状态,将在相应的章节中具体介绍。    上面介绍的特殊功能寄存器除了前两个SP和B以外,其余的均为AT89S51在AT89C51的基础上新增加的SFR。    位地址空间    AT89S51在RAM和SFR中共有211个寻址位的位地址,位地址范围为OOH~FFH,其中OOH~7FH这128位处于片内RAM字节地址20H~2FH单元中,见表2-5。其余的83个可寻址位分布在特殊功能寄存器SFR中,见表2-6。可被位寻址的寄存器有11个,共有位地址88个,其中5个位未用,其余83个位的位地址离散地分布于片内数据存储器区字节地址为80H~FFH的范围内,其最低的位地址等于其字节地址,并且其字节地址的末位都为OH或8H。    表2-5& AT89S51片内RAM的可寻址位及其位地址    表2-6 SFR中的位地址分布    作为对AT89S51存储器结构的总结,图2-7给出了AT89S51中各类存储器的结构图。从图2-7中可以清楚地看出AT89S51的各类存储器在存储器空间的位置。
关键字:&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
热门关键词
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。AT89S51单片机内部数据存储器一共128字节,字节地址是00H到7FH,为什么说SFR映射在片内80H到FFH。_百度知道
AT89S51单片机内部数据存储器一共128字节,字节地址是00H到7FH,为什么说SFR映射在片内80H到FFH。
这样的话,内部数据存储器不就是256个字节了吗?
我有更好的答案
00~7FH与你说的一样,是数据存储器,你也说了80H~FFH是SFR的映射,什么是SFR,就是特殊功能寄存器,在51里就代表如P0,P1,P2,P3,SBUF等等这些与硬件直接相关的存储他们的专有数据的单元。
高级工程师
特殊功能寄存器,并不归类于通用数据存储器范围内。 打个比方,每个月单位发给你一万元,但是五千元必须交税。那么你的收入是五千还是一万呢?
本回答被提问者采纳
00H 到7FH 是《片内RAM》,共 128 字节;80H 到 FFH 是 SFR。两者,别混在一起讨论。
00H到7FH 是 程序存储地址
这个刚好是128字节,是你的程序放的地址80H到FFH 是 单片机的寄存器地址
00H到7FH 是 数据存储地址,这个刚好是128字节,是你的数据放的地址。80H到FFH 是 单片机的寄存器地址。您的回答是不是应该是这个样子的。
恩就是这样
我觉得应该这样说:前128是未定义的自由区域,可随意使用;后128是单片机已定义的区域,只能按照要求使用。
其他2条回答
为您推荐:
其他类似问题
sfr的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。AT89S51单片机最小系统原理图
AT89S51与C的比较
AT89C51是一种带4K字节可编程FLASH存储器(FPEROM—Flash
Programmable and Erasable Read Only Memory)的低电压、高性能CMOS
8位微处理器,称。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器4K字节可编程FLASH存储器,128&8位内部RAM,两个16位/计数器。全静态工作:0Hz-24MHz,32可编程I/O线,5个中断源,可编程串行通道,片内振荡器和时钟电路。
而C单片机有一个标准的CIP-51
8051程序和数据地址配置.它包括数据256字节内存,与上128字节双映射.间接寻址访问一般上128字节目的RAM和直接寻址访问128字节SFR地址空间.较低的128字节内存是通过直接和间接寻址访问.第一32字节寻址的四个部分通用寄存器,接下来16字节可寻址字节或位寻址。
该CIP-51系统控制器内存组织类似于一个标准8051.有两个独立的内存空间:程序存储器和数据存储器.程序和数据存储器共享同一地址空间,但通过访问不同的指令类型。CIP-51核心有一个64
kB程序存储空间.该C执行本8192字节方案在系统,OTP
EPROM的一个连续块组织了地址,内存空间0xFFF.注:512字节(0x1E00 &
0x1FFF)这个内存是使用的保留和不适用于用户程序存储.该C实现了4096字节的EPROM
OTP程序存储空间的C实现了2048 EPROM程序存储器空间OTP字节。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。AT89C51单片机的位地址空间的字节地址范围_百度知道
AT89C51单片机的位地址空间的字节地址范围
我有更好的答案
51单片机的位寻址区总共可询256位、即32字节。位寻址区分为两个部分:低128位:按顺序映射在立即寻址区20h~2Fh总计16个字节上。高128位:按顺序映射在SFR空间能被8整除的SFR上。例如位地址的F2h就是地址为F0h的SFR的bit 2。
采纳率:67%
AT89C51单片机的位地址空间的字节地址范围是20H至2FH共16字节,位地址从00H至7FH共128位。
为您推荐:
其他类似问题
at89c51的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。已解决问题
at89c51单片机对应高低电平的电压值
at89c51单片机对应输入的高低电平的对应的电压值是多少,对于电平问题我总是不能很好理解?谢谢!!
浏览次数:12779
用手机阿里扫一扫
最满意答案
该答案已经被保护
高电平指的是和你电源电压相等的为逻辑1。0V表示逻辑0就是说你&&40脚和20脚之间的电压这个值就是&IO&输出高电平值,作为输入的时候,电压在2。8V以上都认为是高电平。可以兼容3。3V系统。底电平一般在0。8V以下。。不同的器件会有不同的标准。AT89S521&主要性能l&与MCS-51单片机产品兼容l&8K字节在系统可编程Flash存储器l&1000次擦写周期l&全静态操作:0Hz~33Hzl&三级加密程序存储器l&32个可编程I/O口线l&三个16位定时器/计数器l&八个中断源l&全双工UART串行通道l&低功耗空闲和掉电模式l&掉电后中断可唤醒l&看门狗定时器l&双数据指针l&掉电标识符功能特性描述AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K&在系统可编程Flash&存储器。使用Atmel&公司高密度非易失性存储器技术制造,与工业80C51&产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8&位CPU&和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:&8k字节Flash,256字节RAM,32&位I/O&口线,看门狗定时器,2&个数据指针,三个16&位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52&可降至0Hz&静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。R8&位微控制器8K&字节在系统可编程FlashAT89S52Rev.&AT89S522&引脚结构AT89S523&方框图引脚功能描述AT89S524&VCC&:&电源GND:&地P0&口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写&1&时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1&口:P1&口是一个具有内部上拉电阻的8&位双向I/O&口,p1&输出缓冲器能驱动4&个TTL&逻辑电平。对P1&端口写&1&时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。引脚号&第二功能P1.0&T2(定时器/计数器T2的外部计数输入),时钟输出P1.1&T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5&MOSI(在系统编程用)P1.6&MISO(在系统编程用)P1.7&SCK(在系统编程用)P2&口:P2&口是一个具有内部上拉电阻的8&位双向I/O&口,P2&输出缓冲器能驱动4&个TTL&逻辑电平。对P2&端口写&1&时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX&)时,P2&口送出高八位地址。在这种应用中,P2&口使用很强的内部上拉发送1。在使用8位地址(如MOVX&)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3&口:P3&口是一个具有内部上拉电阻的8&位双向I/O&口,p2&输出缓冲器能驱动4&个TTL&逻辑电平。对P3&端口写&1&时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。AT89S525&引脚号&第二功能P3.0&RXD(串行输入)P3.1&TXD(串行输出)P3.2&INT0(外部中断0)P3.3&INT0(外部中断0)P3.4&T0(定时器0外部输入)P3.5&T1(定时器1外部输入)P3.6&WR(外部数据存储器写选通)P3.7&RD(外部数据存储器写选通)RST:&复位输入。晶振工作时,RST脚持续2&个机器周期高电平将使单片机复位。看门狗计时完成后,RST&脚输出96&个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8&位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE&以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置&&1&,ALE操作将无效。这一位置&&1&,ALE&仅在执行MOVX&或MOVC指令时有效。否则,ALE&将被微弱拉高。这个ALE&使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H&到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。AT89S526&表1&AT89S52&特殊寄存器映象及复位值特殊功能寄存器特殊功能寄存器(SFR)的地址空间映象如表1所示。并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将得到一个随机数据;写入的数据将会无效。用户不应该给这些未定义的地址写入数据&1&。由于这些寄存器在将来可能被赋予新的功能,复位后,这些位都为&0&。定时器2&寄存器:寄存器T2CON&和T2MOD&包含定时器2&的控制位和状态位(如表2和表3所示),寄存器对RCAP2H和RCAP2L是定时器2的捕捉/自动重载寄存器。中断寄存器:各中断允许位在IE寄存器中,六个中断源的两个优先级也可在IE中设置。AT89S527&表2&T2CON:定时器/计数器2控制寄存器T2CON&地址为0C8H&复位值:B位可寻址TF2&EXF2&RLCLK&TCLK&EXEN2&TR27&6&5&4&3&2&1&0符号&功能TF2&定时器2&溢出标志位。必须软件清&0&。RCLK=1&或TCLK=1&时,TF2不用置位。EXF2定时器2&外部标志位。EXEN2=1&时,T2EX&上的负跳变而出现捕捉或重载时,EXF2&会被硬件置位。定时器2&打开,EXF2=1&时,将引导CPU执行定时器2&中断程序。EXF2&必须如见清&0&。在向下/向上技术模式(DCEN=1)下EXF2不能引起中断。RCLK串行口接收数据时钟标志位。若RCLK=1,串行口将使用定时器2&溢出脉冲作为串行口工作模式1&和3&的串口接收时钟;RCLK=0,将使用定时器1计数溢出作为串口接收时钟。TCLK串行口发送数据时钟标志位。若TCLK=1,串行口将使用定时器2&溢出脉冲作为串行口工作模式1&和3&的串口发送时钟;TCLK=0,将使用定时器1计数溢出作为串口发送时钟。EXEN2定时器2外部允许标志位。当EXEN2=1时,如果定时器2没有用作串行时钟,T2EX(P1.1)的负跳变见引起定时器2&捕捉和重载。若EXEN2=0,定时器2将视T2EX端的信号无效TR2&开始/停止控制定时器2。TR2=1,定时器2开始工作定时器2&定时/计数选择标志位。=0,定时;&=1,外部事件计数(下降沿触发)捕捉/重载选择标志位。当EXEN2=1时,&=1,T2EX出现负脉冲,会引起捕捉操作;当定时器2溢出或EXEN2=1时T2EX出现负跳变,都会出现自动重载操作。=0&将引起T2EX&的负脉冲。当RCKL=1或TCKL=1时,此标志位无效,定时器2溢出时,强制做自动重载操作。双数据指针寄存器:为了更有利于访问内部和外部数据存储器,系统提供了两路16位数据指针寄存器:位于SFR中82H~83H的DP0和位于84H~85。特殊寄存器AUXR1中DPS=0&选择DP0;DPS=1&选择DP1。用户应该在访问数据指针寄存器前先初始化AT89S528&DPS至合理的值。表3a&AUXR:辅助寄存器AUXR&地址:8EH&复位值:XXX00XX0B不可位寻址-&-&-&WDIDLE&DISRTO&-&-&DISALE7&6&5&4&3&2&1&0-&预留扩展用DISALE&ALE使能标志位DISALE&操作方式0&ALE&以1/6晶振频率输出信号1&ALE&只有在执行MOVX&或MOVC指令时激活DISRTO&复位输出标志位DISRTO0&看门狗(WDT)定时结束,Reset&输出高电平1&Reset&只有输入WDIDLE&空闲模式下WDT使能标志位WDIDLE0&空闲模式下,WDT继续计数1&空闲模式下,WDT停止计数掉电标志位:掉电标志位(POF)位于特殊寄存器PCON的第四位(PCON.4)。上电期间POF置&1&。POF可以软件控制使用与否,但不受复位影响。表3b&AUXR1:辅助寄存器1AUXR1&地址:A2H&复位值:XXXXXXX0B不可位寻址-&-&-&-&-&-&-&DPS7&6&5&4&3&2&1&0-&预留扩展用DPS&数据指针选择位DPS0&选择DPTR寄存器DP0L和DP0H1&选择DPTR寄存器DP1L和DP1HAT89S529&存储器结构MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于89S52,如果EA&接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为:2000H~FFFFH。数据存储器:AT89S52&有256&字节片内数据存储器。高128&字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH&的地址时,寻址方式决定CPU&访问高128&字节RAM&还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。例如,下面的直接寻址指令访问0A0H(P2口)存储单元MOV&0A0H&,&#data使用间接寻址方式访问高128&字节RAM。例如,下面的间接寻址方式中,R0&内容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。MOV&&,&#data堆栈操作也是简介寻址方式。因此,高128字节数据RAM也可用于堆栈空间。看门狗定时器WDT是一种需要软件控制的复位方式。WDT&由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。WDT&在默认情况下无法工作;为了激活WDT,户用必须往WDTRST&寄存器(地址:0A6H)中依次写入01EH&和0E1H。当WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周期依赖于外部时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。当WDT溢出,它将驱动RSR引脚一个高个电平输出。WDT的使用为了激活WDT,用户必须向WDTRST寄存器(地址为0A6H的SFR)依次写入0E1H和0E1H。当WDT激活后,用户必须向WDTRST写入01EH和0E1H喂狗来避免WDT溢出。当计数达到8191(1FFFH)时,13&位计数器将会溢出,这将会复位器件。晶振正常工作、WDT激活后,每一个机器周期WDT&都会增加。为了复位WDT,用户必须向WDTRST&写入01EH&和0E1H(WDTRST&是只读寄存器)。WDT&计数器不能读或写。当WDT&计数器溢出时,将给RST&引脚产生一个复位脉冲输出,这个复位脉冲持续96个晶振周期(TOSC),其中TOSC=1/FOSC。为了很好地使用WDT,应该在一定时间内周期性写入那部分代码,以避免WDT复位。掉电和空闲方式下的WDT在掉电模式下,晶振停止工作,这意味这WDT也停止了工作。在这种方式下,用户不必喂狗。有两种方式可以离开掉电模式:硬件复位或通过一个激活的外部中断。通过硬件复位退出掉电模式后,用户就应该给WDT&喂狗,就如同通常AT89S52&复位一样。通过中断退出掉电模式的情形有很大的不同。中断应持续拉低很长一段时间,使得晶振AT89S5210&稳定。当中断拉高后,执行中断服务程序。为了防止WDT在中断保持低电平的时候复位器件,WDT&直到中断拉低后才开始工作。这就意味着WDT&应该在中断服务程序中复位。为了确保在离开掉电模式最初的几个状态WDT不被溢出,最好在进入掉电模式前就复位WDT。在进入待机模式前,特殊寄存器AUXR的WDIDLE位用来决定WDT是否继续计数。默认状态下,在待机模式下,WDIDLE=0,WDT继续计数。为了防止WDT在待机模式下复位AT89S52,用户应该建立一个定时器,定时离开待机模式,喂狗,再重新进入待机模式。UART在AT89S52&中,UART&的操作与AT89C51&和AT89C52&一样。为了获得更深入的关于UART&的信息,可参考ATMEL&网站(http://www.atmel.com)。从这个主页,选择&Products&,然后选择&8051-Architech&Flash&Microcontroller&,再选择&ProductOverview&即可。定时器0&和定时器1在AT89S52&中,定时器0&和定时器1&的操作与AT89C51&和AT89C52&一样。为了获得更深入的关于UART&的信息,可参考ATMEL&网站(http://www.atmel.com)。从这个主页,选择&Products&,然后选择&8051-Architech&Flash&Microcontroller&,再选择&ProductOverview&即可。定时器2定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。其工作方式由特殊寄存器T2CON中的C/T2位选择(如表2所示)。定时器2有三种工作模式:捕捉方式、自动重载(向下或向上计数)和波特率发生器。如表3&所示,工作模式由T2CON中的相关位选择。定时器2&有2&个8位寄存器:TH2和TL2。在定时工作方式中,每个机器周期,TL2&寄存器都会加1。由于一个机器周期由12&个晶振周期构成,因此,计数频率就是晶振频率的1/12。表3&定时器2工作模式RCLK+TCLK&CP/RL2&TR2&MODE0&0&1&16位自动重载0&1&1&16位捕捉1&&&1&波特率发生器&&&&0&(不用)在计数工作方式下,寄存器在相关外部输入角T2&发生1&至0&的下降沿时增加1。在这AT89S5211&种方式下,每个机器周期的S5P2期间采样外部输入。一个机器周期采样到高电平,而下一个周期采样到低电平,计数器将加1。在检测到跳变的这个周期的S3P1&期间,新的计数值出现在寄存器中。因为识别1-0的跳变需要2个机器周期(24个晶振周期),所以,最大的计数频率不高于晶振频率的1/24。为了确保给定的电平在改变前采样到一次,电平应该至少在一个完整的机器周期内保持不变。捕捉方式在捕捉模式下,通过T2CON中的EXEN2来选择两种方式。如果EXEN2=0,定时器2时一个16位定时/计数器,溢出时,对T2CON&的TF2标志置位,TF2引起中断。如果EXEN2=1,定时器2做相同的操作。除上述功能外,外部输入T2EX引脚(P1.1)1至0的下跳变也会使得TH2和TL2中的值分别捕捉到RCAP2H和RCAP2L中。除此之外,T2EX&的跳变会引起T2CON&中的EXF2&置位。像TF2&一样,T2EX&也会引起中断。捕捉模式如图5所示。图5&定时器的捕捉模式自动重载当定时器2&工作于16&位自动重载模式,可对其编程实现向上计数或向下计数。这一功能可以通过特殊寄存器T2MOD(见表4)中的DCEN(向下计数允许位)来实现。通过复位,DCEN&被置为0,因此,定时器2&默认为向上计数。DCEN&设置后,定时器2就可以取决于T2EX向上、向下计数。如图6&所示,DCEN=0&时,定时器2&自动计数。通过T2CON&中的EXEN2&位可以选择两种方式。如果EXEN2=0,定时器2计数,计到0FFFFH后置位TF2溢出标志。计数溢出也使得定时器寄存器重新从RCAP2H&和RCAP2L&中加载16&位值。定时器工作于捕捉模式,RCAP2H和RCAP2L的值可以由软件预设。如果EXEN2=1,计数溢出或在外部T2EX(P1.1)引脚上的1到0的下跳变都会触发16位重载。这个跳变也置位EXF2中断标志位。如图6所示,置位DCEN,允许定时器2向上或向下计数。在这种模式下,T2EX引脚控制着计数的方向。T2EX上的一个逻辑1使得定时器2向上计数。定时器计到0FFFFHAT89S5212&溢出,并置位TF2。定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到定时器存储器TH2和TL2中。T2EX&上的一个逻辑0&使得定时器2&向下计数。当TH2&和TL2&分别等于RCAP2H&和RCAP2L中的值的时候,计数器下溢。计数器下溢,置位TF2,并将0FFFFH加载到定时器存储器中。定时器2上溢或下溢,外部中断标志位EXF2&被锁死。在这种工作模式下,EXF2不能触发中断。图6&定时器2重载模式(DCEN=0)表4&T2MOD-定时器2控制寄存器T2MOD&地址:0C9H&复位值:XXXXXX00B不可位寻址-&-&-&-&-&-&T2OE&DCEN7&6&5&4&3&2&1&0符号&功能-&无定义,预留扩展T2OE&定时器2输出允许位DCEN&置1后,定时器2可配置成向上/向下计数AT89S5213&图7&定时器2自动重载(DCEN=1)图8&定时器2&波特率发生器模式AT89S5214&波特率发生器通过设置T2CON(见表2)中的TCLK或RCLK可选择定时器2&作为波特率发生器。如果定时器2作为发送或接收波特率发生器,定时器1可用作它用,发送和接收的波特率可以不同。如图8&所示,设置RCLK&和(或)TCLK&可以使定时器2&工作于波特率产生模式。波特率产生工作模式与自动重载模式相似,因此,TH2&的翻转使得定时器2&寄存器重载被软件预置16位值的RCAP2H和RCAP2L中的值。模式1和模式3的波特率由定时器2溢出速率决定,具体如下公式:模式1和模式3波特率=16定时器2溢出率定时器可设置成定时器,也可为计数器。在多数应用情况下,一般配置成定时方式(CP/T2=0)。定时器2&用于定时器操作与波特率发生器有所不同,它在每一机器周期(1/12晶振周期)都会增加;然而,作为波特率发生器,它在每一机器状态(1/2晶振周期)都会增加。波特率计算公式如下:模式1和模式3的波特率=32&[65536&-&(RCAP2H,RCAP2L)]晶振频率*原文少半个括号&(&其中,(RCAP2H,RCAP2L)是RCAP2H和RCAP2L组成的16位无符号整数。定时器2&作为波特率发生器,如图8&所示。图中仅仅在T2CON&中RCLK&或TCLK=1才有效。特别强调,TH2的翻转并不置位TF2,也不产生中断;&EXEN2置位后,T2EX引脚上1~0的下跳变不会使(RCAP2H,RCAP2L)重载到(TH2,TL2)中。因此,定时器2作为波特率发生器,T2EX也还可以作为一个额外的外部中断。定时器2处于波特率产生模式,TR2=1,定时器2正常工作。TH2或TL2不应该读写。在这种模式下,定时器在每一状态都会增加,读或写就不会准确。寄存器RCAP2可以读,但不能写,因为写可能和重载交迭,造成写和重载错误。在读写定时器2&或RCAP2寄存器时,应该关闭定时器(TR2清0)。可编程时钟输出如图9&所示,可以通过编程在P1.0&引脚输出一个占空比为50%的时钟信号。这个引脚除了常规的I/O&角外,还有两种可选择功能。它可以通过编程作为定时器/计数器2&的外部时钟输入或占空比为50%的时钟输出。当工作频率为16MHZ时,时钟输出频率范围为61HZ到4HZ。为了把定时器2配置成时钟发生器,位C/T2(T2CON.1)必须清0,位T2OE(T2MOD.1)必须置1。位TR2(T2CON.2)启动、停止定时器。时钟输出频率取决于晶振频率和定时器2捕捉寄存器(RCAP2H,RCAP2L)的重载值,如公式所示:时钟输出频率=4&[65536-(&2&,&2&)]晶振频率&&RCAP&H&RCAP&L在时钟输出模式下,定时器2不会产生中断,这和定时器2用作波特率发生器一样。定AT89S5215&时器2也可以同时用作波特率发生器和时钟产生。不过,波特率和输出时钟频率相互并不独立,它们都依赖于RCAP2H和RCAP2L。图9&定时器2时钟输出模式中断AT89S52&有6个中断源:两个外部中断(INT0&和INT1),三个定时中断(定时器0、1、2)和一个串行中断。这些中断如图10所示每个中断源都可以通过置位或清除特殊寄存器IE&中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。如表5所示,IE.6位是不可用的。对于AT89S52,IE.5位也是不能用的。用户软件不应给这些位写1。它们为AT89系列新产品预留。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2&或EXF2激活中断,标志位也必须由软件清0。定时器0和定时器1标志位TF0&和TF1在计数溢出的那个周期的S5P2被置位。它们的值一直到下一个周期被电路捕捉下来。然而,定时器2&的标志位TF2&在计数溢出的那个周期的S2P2被置位,在同一个周期被电路捕捉下来。AT89S5216&表4&中断允许控制寄存器(IE)(MSB)&(LSB)EA&-&ET2&ES&ET1&EX1&ET0&EX0中断允许控制位=1,允许中断中断允许控制位=0,禁止中断符号&位地址&功能EA&IE.7&中断总允许控制位。EA=0,中断总禁止;EA=1,各中断由各自的控制位设定-&IE.6&预留ET2&IE.5&定时器2中断允许控制位ES&IE.4&串行口中断允许控制位ET1&IE.3&定时器1中断允许控制位EX1&IE.2&外部中断1允许控制位ET0&IE.1&定时器0中断允许控制位EX0&IE.0&外部中断1允许控制位图10&中断源AT89S5217&晶振特性如图10&所示,AT89S52&单片机有一个用于构成内部振荡器的反相放大器,XTAL1&和XTAL2&分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2&可以不接,而从XTAL1&接入,如图12&所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。图11&内部振荡电路连接图&图12&外部振荡电路连接图石英晶振&C1,C2=30PF&10PF陶瓷谐振器&C1,C2=40PF&10PF空闲模式在空闲工作模式下,CPU&处于睡眠状态,而所有片上外部设备保持激活状态。这种状态可以通过软件产生。在这种状态下,片上RAM和特殊功能寄存器的内容保持不变。空闲模式可以被任一个中断或硬件复位终止。由硬件复位终止空闲模式只需两个机器周期有效复位信号,在这种情况下,片上硬件禁止访问内部RAM,而可以访问端口引脚。空闲模式被硬件复位终止后,为了防止预想不到的写端口,激活空闲模式的那一条指令的下一条指令不应该是写端口或外部存储器。掉电模式在掉电模式下,晶振停止工作,激活掉电模式的指令是最后一条执行指令。片上RAMAT89S5218&和特殊功能寄存器保持原值,直到掉电模式终止。掉电模式可以通过硬件复位和外部中断退出。复位重新定义了SFR&的值,但不改变片上RAM&的值。在VCC未恢复到正常工作电压时,硬件复位不能无效,并且应保持足够长的时间以使晶振重新工作和初始化。表6&空闲模式和掉电模式下的外部引脚状态模式&程序存储器&ALE&PSEN&PORT0&PORT1&PORT2&PORT3空闲&内部&1&1&数据&数据&数据&数据空闲&外部&1&1&浮空&数据&地址&数据掉电&内部&0&0&数据&数据&数据&数据掉电&外部&0&0&浮空&数据&数据&数据程序存储器的加密位AT89S52有三个加密位不可编程(U)和可编程获得下表所示的功能。表7&加密位保护模式加密位1(LB1)编程后,EA&引脚的逻辑值被采样,并在复位期间锁存。如果器件复位,而没有复位,将锁存一个随机值,直到复位为止。为了器件功能正常,锁存到的EA值必须和这个引脚的当前逻辑电平一致。Flash编程―并行模式AT89S52&带有用作编程的片上Flash&存储器阵列。编程接口需要一个高电压(12V)编程使能信号,并且兼容常规的第三方*(原文:third-party,不知道对不对)Flash或EPROM编程器。AT89S52程序存储阵列采用字节式编程。编程方法对AT89S52编程之前,需根据Flash编程模式表和图13、图14对地址、数据和控制信号设置。可采用下列步骤对AT89S52编程:AT89S5219&1.在地址线上输入编程单元地址信号2.在数据线上输入正确的数据3.激活相应的控制信号4.把EA/Vpp升至12V5.每给Flash写入一个字节或程序加密位时,都要给ALE/PROG一次脉冲。字节写周期时自身定制的,典型值仅仅50us。改变地址、数据重复第1步到第5步,知道全部文件结束。Data&PollingAT89S52用Data&Polling作为一个字节写周期结束的标志特征。译者注:后面全是编程的时序问题,实在译不下去了。感兴趣的接着翻啊。参考资料:1.ATMEL公司&AT89S52的技术手册2.深圳市中源单片机发展有限公司&AT89C52&Datasheets3.复旦大学出版社&单片微型机原理、应用和实验&张友德等&
答案创立者
以企业身份回答&
正在进行的活动
生意经不允许发广告,违者直接删除
复制问题或回答,一经发现,拉黑7天
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题
扫一扫用手机阿里看生意经
问题排行榜
当前问题的答案已经被保护,只有知县(三级)以上的用户可以编辑!写下您的建议,管理员会及时与您联络!
server is ok

我要回帖

 

随机推荐