您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 第2章-STC89C51系列结和原理-3
第一类程序存储器空间程序存储器(Flash)用于存放编制好的程序、表格和程序中用到的常量。Flash存储器增加了EPROM所没有的电可擦除和编程特性。片内为4KB的Flash,地址为0000H~0FFFH。16位地址线,可外扩的程序存储器空间最大为64KB,地址为0000H~FFFFH。使用时应注意以下问题:(1)分为片内和片外两部分,访问片内的还是片外的程序存储器,由EA引脚电平确定。EA=1时,CPU从片内0000H开始取指令,当PC值没有超出0FFFH时,只访问片内Flash存储器,当PC值超出0FFFH自动转向读片外程序存储器空间1000H~FFFFH内的程序。EA=0时,只能执行片外程序存储器(0000H~FFFFH)中的程序。不访问片内4KBFlash存储器。(2)程序存储器某些固定单元用于各中断源中断服务程序入口。64KB程序存储器空间中有5个特殊单元分别对应于5个中断源的中断入口地址,见表2-3。通常这5个中断入口地址处都放一条跳转指令跳向对应的中断服务子程序,而不是直接存放中断服务子程序。表2-3中断源入口地址外部中断00003H定时器0000BH外部中断10013H定时器1001BH串行口0023HMCS-51系列单片机复位后PC的内容为0000H,故单片机复位后将从0000H单元开始执行程序。程序存储器的0000H单元地址是系统程序的启动地址。这里一般放一条绝对转移指令。转到后面的用户程序。5个中断源的地址之间仅隔8个单元,存放中断服务程序往往不够用,通常从相应中断地址区首地址开始,存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址区去。第二类数据存储器空间数据存储器空间分为片内与片外两部分。1.片内数据存储器片内数据存储器(RAM)共128个单元,字节地址为00H~7FH。如图为片内数据存储器的分布示意图。分为三个区域:①工作寄存器区(00H~1FH)②位寻址区(20H~2FH)③用户RAM区(30H~7FH)①00H~1FH的32个单元是4组通用工作寄存器区,每区包含8个,为R7~R0。可通过指令改变RS1、RS0(PSW)两位来选择。用于临时寄存信息。②20H~2FH的16个单元的128位可位寻址区,也可字节寻址。③30H~7FH是一般RAM区,也称为用户RAM区,共80字节,只能字节寻址,用作存放数据以及作为堆栈区。不使用的工作寄存器或位寻址区也都可以作为一般的RAM使用。例如,如果在程序中只用到第0组工作寄存器,那么08~1FH区域就可以作为一般的RAM使用。2.片外数据存储器当片内128B的RAM不够用时,需外扩,最多可外扩64KB的RAM。注意,片内RAM与片外RAM两个空间是相互独立的,片内RAM与片外RAM的低128B的地址是相同的,但由于使用的是不同的访问指令,所以不会发生冲突。第三类特殊功能寄存器(SFR)特殊功能寄存器(SFR)也称专用寄存器,专门用于控制、管理片内算术逻辑部件、并行I/O口、串行口、定时/计数器、中断系统等功能模块的工作,用户在编程时可以给其设定值,但不能移作它用。SFR离散地分布在片内RAM的80H—FFH地址空间,与片内数据存储器统一编址。51子系列有18个特殊功能寄存器,其中3个为双字节(DPTR、T0、T1),共占用21个字节;其中11个可位寻址(仅83位有效)。凡是可位寻址的SFR,字节地址末位只能是0H或8H。52子系列有21个特殊寄存器,其中5个为双字节,共占用26个字节。注意:(1)21个可字节寻址的专用寄存器是不连续地分散在内部RAM高128单元之中,共83个可寻址位。尽管还剩余许多空闲单元,但用户并不能使用。(2)在22个专用寄存器中,唯一一个不可寻址的PC。PC不占据RAM单元,它在物理上是独立的(在控制器中),因此是不可寻址的寄存器。(3)对专用寄存器只能使用直接寻址方式,书写时既可使用寄存器符号,也可使用寄存器单元地址。(因为寄存器名和地址单元的地址已经一一对应)下面介绍某些SFR,余下的SFR将在后面介绍。序号特殊功能寄存器符号名称字节地址位地址复位值1A(或Acc)累加器E0HE7H~E0H00H2BB寄存器F0HF7H~F0H00H3DPH数据指针DPTR高字节83H00H4DPL数据指针DPTR低字节82H00H5IE中断允许控制寄存器A8HAFH~A8H00H6IP中断优先级控制寄存器B8HBFH~B8HX0000000B7P0P0口寄存器80H87H~80HFFH8P1P1口寄存器90H97H~90HFFH9P2P2口寄存器A0HA7H~A0HFFH10P3P3口寄存器B0HB7H~B0HFFH11PCON电源控制寄存器87H00XXX000B12PSW程序状态字寄存器D0HD7H~D0H00H13SBUF串行发送数据缓冲器99H-XXXXXXXXB14SCON串行控制寄存器98H9FH~98H00H15SP堆栈指针81H07H16TCON定时器/计数器控制寄存器88H8FH~88H00H17TL0定时器/计数器0(低字节)8AH00H18TH0定时器/计数器0(高字节)8BH00H19TL1定时器/计数器1(低字节)8CH00H20TH1定时器/计数器1(高字节)8DH00H21TMOD定时器/计数器方式控制89H00HSFR的分布情况如下:CPU专用寄存器:累加器A(E0H)、寄存器B(F0H)、程序状态寄存器PSW(D0H)、堆栈指针SP(81H)、数据指针DPTR(82H、83H)。并行接口:P0~P3(80H、90H、A0H、B0H)。串行接口:串口控制寄存器SCON(98H);串口数据缓冲器SBUF(99H);电源控制寄存器PCON(87H)。定时/计数器:方式寄存器TMOD(89H);控制寄存器TCON(88H);初值寄存器TH0、TL0(8BH、8AH)/TH1、TL1(8DH、8CH)。中断系统:中断允许寄存器IE(A8H);中断优先级寄存器IP(B8H)。定时/计数器2相关寄存器(仅52子系列有):定时/计数器2控制寄存器T2CON(CBH);定时/计数器2自动重装寄存器RLDL、RLDH(CAH、CBH);定时/计数器2初值寄存器TH2、TL2(CDH、CCH)。第四类位地址空间211个寻址位的位地址,其中:00H~7FH这128位处于片内RAM字节地址20H~2FH单元中,如表2-5所示。其余的83个可寻址位分布在特殊功能寄存器SFR中,见表2-6。可被位寻址的特殊寄存器有11个,共有位地址88个,5个位未用,其余83个位的位地址离散地分布于片内数据存储器区字节地址为80H~FFH的范围内,其最低的位地址等于其字节地址,且其字节地址的末位都为0H或8H。表2-5AT89C51片内RAM的可寻址位及其位地址字节单元地址D7D6D5D4D3D2D1D020H070605040302010021H0F0E0D0C0B0A090822H171615141312111023H1F1E1D1C1B1A191824H272625242322212025H2F2E2D2C2B2A292826H373635343332313027H3F3E3D3C3B3A393828H474645444342414029H4F4E4D4C4B4A49482AH57565554535251502BH5F5E5D5C5B5A59582CH67666564636261602DH6F6E6D6C6B6A69682EH77767574737271702FH7F7E7D7C7B7A7978表2-6SFR中的位地址分布作为对AT89C51存储器结构的小结,下面的图为各类存储器的结构图。从图中可清楚看出各类存储器在存储器空间的位置。AT89C51单片机的存储器结构2.5P1~P3口驱动LED发光二极管下面讨论P1~P3口与LED发光二极管的驱动连接问题。P0口与P1、P2、P3口相比,P0口的驱动能力较大,每位可驱动8个LSTTL输入,而P1、P2、P3口的每一位的驱动能力,只有P0口的一半。当P0口某位为高电平时,可提供400μA的电流;当P0口某位为低电平(0.45V)时,可提供3.2mA的灌电流。任何一个口要想获得较大的驱动能力,只能用低电平输出。例如,使用单片机的并行口P1~P3直接驱动发光二极管,电路如下图。由于P1~P3内部有30kΩ左右的上拉电阻。如高电平输出,则强行从P1、P2和P3口输出的电流dI会造成单片机端口的损坏。如端口引脚为低电平,能使电流dI从单片机外部流入内部,则将大大增加流过的电流值。所以,当P1~P3口驱动LED发光二极管时,应该采用低电平驱动。(a)不恰当的连接:高电平驱动(b)恰当的连接:低电平驱动发光二极管与AT89C51并行口的直接连接2.6有关时序的概念计算机在执行指令时,一条指令经译码后产生若干个基本微操作,这些基本微操作在时间上有严格的先后次序,这种次序称为计算机的时序。几个CPU时序的基本概念1.振荡周期:指为单片机提供定时信号的振荡源的周期,是时序中最小的时间单位。若为内部产生方式,则为石英晶体的振荡周期。(常用12MHz、6MHz等)。80C51单片机的时钟电路振荡脉冲并不直接使用,由XTAL2或XTAL1端送往内部时钟电路(fosc):经过2分频,向CPU提供2相时钟信号P1和P2(f拍节=1/2fosc);再经3分频,(6分频)产生ALE时序(fALE=1/6fosc);经过12分频,成为机器周期信号(MC=12/fosc),如下图所示。需要指出的是,CPU的运算操作在P1期间,数据传送在P2期间。2.时钟周期:是振荡源信号经2分频后形成的时钟脉冲信号,也就是一个时钟周期是振荡周期的2倍。时钟信号向单片机提供一个二节拍时钟信号,在每个时钟的前半周期,节拍1信号P1有效,后半周期节拍P2有效,每个节拍持续1个振荡周期。3.机器周期:CPU完成一个基本操作所需的时间为机器周期。一个机器周期包含6个时钟周期,也就是等于12个振荡周期。当石英晶体的振荡为12MHz和6MHz时,时钟周期分别为1/12μs和1/6μs,机器周期分别为1μs和2μs。4.指令周期:是指CPU执行一条指令所需的时间,是时序中最大时间单位。由于单片机执行不同的指令,所需要的时间不同,因此,不同指令所包含的机器周期数也不同,机器周期越少的指令执行速度快。单片机中大多数指令的指令周期由一个机器周期或两个机器周期组成,只有乘法、除法指令需要四个机器周期。CPU时序1机器周期和指令周期机器周期:每个机器周期包含S1、S2、S3、S4、S5、S6个状态,每个状态包含2拍P1和P2,每一个节拍持续1个振荡周期。因此,每12个振荡周期为一个机器周期。依次可表示为S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2。AT89C51的机器周期2.7单片机的复位复位是使单片机的CPU或系统中的其它部件处于某一确定的初始状态,并从这一状态开始工作。单片机的工作就是从复位开始的。2.7.1复位电路在时钟电路工作以后,当外部电路使得RST端出现2个机器周期(24个振荡周期)以上的高电平时,系统内部复位。为了保证上电复位的可靠,RST必须保持足够长时间的高电平,该时间至少为振荡器的稳定时间(通常为几个毫秒)加上两个机器周期。如果RST引脚持续保持高电平,单片机就处于循环复位状态。实际应用中,复位操作有两种基本形式:一种是上电复位,另一种是上电与按键均有效的复位。(a)上电复位(b)上电与按键均有效的复位上电复位要求接通电源后,单片机自动实现复位操作。常用的上电复位在加电的瞬间,RST引脚为高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。该电路典型的电阻值为:晶体振荡器为12MHz时,C1为10μF,R1为8.2kΩ。复位时,PC初始化为0000H,程序从0000H单元开始执行。除系统的正常初始化外,当程序出错(如程序跑飞)或操作错误使系统处于死锁状态时,需按复位键使RST脚为高电平
本文标题:第2章-STC89C51系列结和原理-3
链接地址:https://www.777doc.com/doc-3926245 .html