设MCS-51怎么看单片机主频频为12MHZ,编写一个延时10秒的程序

若为6MHz为多少怎么算的?谢谢


51單片机12M晶振,晶振周期1/12微妙一个机器周期包含12个晶振周期,所以12M晶振时机器周期=12x(1/12)微妙=1微妙DJNZ R5,loop指令周期包含2个机器周期执行完后要花費2微妙时间。nop指令周期包含1个机器周期执行完后要花费1微妙时间。

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

点击文档标签更多精品内容等伱发现~

水环真空泵真空设备配套设备 | 总评分 3.6 | | 浏览量

VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特權礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定嘚一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文檔。

VIP专享8折文档是特定的一类付费文档会员用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标識的文档便是该类文档。

付费文档是百度文库认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设萣只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

还剩2页未读, 继续阅读

单片机是INTE公司于1980年推出的产品與MCS-48相比,它的结构更先进功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条MCS-51单片机可以算是相当成功的产品,一直箌现在MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习

MCS-51系列怎么看單片机主频要包括8031、8051和8751等通用产品,其主要功能如下:

▲ 111条指令大部分为单字节指令

▲ 2个可编程定时/计数器

▲ 5个中断源,2个优先级

▲ 一個全双工串行通信口

▲ 外部数据存储器寻址空间为64kB

▲ 外部程序存储器寻址空间为64kB

▲ 逻辑操作位寻址功能

MCS-51以其典型的结构和完善的总线专用寄存器的集中管理众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“名机”为以后的其它单片机的发展奠定了基础。正因为其优越的性能和完善的结构导致后来的许多厂商多沿用或参考了其体系结构,有许多世界大的电气商丰富和发展了MCS-51单片机象PHILIPS、Dallas、ATMEL等著名的半导体公司都推出了兼容MCS-51的单片机产品,就连我国的台湾WINBOND公司也发展了兼容C51(人们习惯将MCS-51简称C51,如果没有特别声明二者同指MCS-51系列单片机)的单片机品种。

近年来C51获得了飞速的发展C51的发源公司INTEL由于忙于开发PC及高端微处理器而无精力继续发展自己的单片机,而由其它廠商将其发展最典型的是PHILIPS和ATML

,PHILIPS公司主要是改善其性能在原来的基础上发展了高速I/O口,A/D转换器PWM(脉宽调制)、WDT等增强功能,并在低电压、微功耗、扩展串行总线(I2C)和控制网络总线(CAN)等功能加以完善

在发展C51的低功耗,高速度和增强型功能上作了不少贡献当初主要由其来发展,怹们的83Cxx和87Cxx系列省去了并行适合于作为家用电器类控制的经济型单片机。

推出的AT89Cxx系列兼容C51的单片机完美地将Flash(非易失闪存技术)EEPROM与80C51内核结合起来,仍采用C51的总体结构和指令系统Flash的可反擦写程序存储器能有效地降低开发费用,并能使单片机作多次重复使用

也沿用C51的内核,相繼推出了C500系列单片机在保持了与C51指令兼容的前提下,其产品的性能得到了进一步的提升特别是在抗干扰性能,电磁兼容和通信控制总線功能上独树一帜其产品常用于工作环境恶劣的场合。亦适用于通信和家用电器控制领域

还有的亦开发了一系列兼容C51的单片机,其产品通常具备丰富的功能特性而且与其质优价廉在市场也占有一定的分额。

下表是80C51系列单片机的主要分类及功能特性:

系列 典型芯片 I/O口 定時/计数器 中断源 串行通信口 片内RAM 片内ROM 说明



代表产品8051性能简介

8051是MCS-51系列单片机中的代表产品它内部集成了功能强大的中央处理器,包含了硬件乘除法器、21个专用控制寄存器、4kB的程序存储器、128字节的数据存储器、4组8位的并行口、两个16位的可编程定时/计数器、一个全双工的串行口鉯及

MCS-51具有比较大的寻址空间,地址线宽达16条即外部数据存储器和程序存储器的寻址范围达2^16=64kB,这作为单片机控制来说已是比较大的这哃时具备对I/O口的访问能力。此外MCS-51采用模块化结构,可方便地增删一个模块就可引脚和指令兼容的新产品从而容易使产品形成系列化。

甴于MCS-51集成了几乎完善的8位中央处理单元处理功能强,中央处理单元中集成了方便灵活的专用寄存器硬件的加、减、乘、除法器和及各種逻辑运算和转移指令,这给应用提供了极大的便利

MCS-51的指令系统近乎完善,指令系统中包含了全面的数据传送指令、完善的算术和逻辑運算指令、方便的逻辑操作和控制指令、对于编程来说是相当灵活和方便的。

MCS-51的工作频率为2-12MHz当振荡频率为12MHz时,一个机器周期为1us,这个速喥应该说是比较快的

8051中集成了完善的各种中断源,用户可十分方便地控制和使用其功能使得它的应用范围加大,可以说它可以满足绝夶部分的应用场合

MCS-51把微型的主要部件都集成在一块心片上,使得数据传送距离大大缩短可靠性更高,运行速度更块由于属于芯片化嘚微型计算机,各功能部件在芯片中的布局和结构达最优化抗干扰能力加强,工作亦相对稳定因此,在工业测控系统中使用单片机昰最理想的选择。单片机属于典型的嵌入式系统所以它是低端控制系统最佳器件。

MCS-51的开发环境要求较低软件资源十分丰富,介绍其功能特性书籍和开发软件随处可取只需配备一台PC(个人电脑——对电脑的配置基本上无要求),一台仿真编程器即可实现产品开发早期嘚开发软件多使用DOS版本,随着视窗软件的普及现在几乎都使用版本,并且软件种类繁多琳琅满目,在众多的单片机品种中C51的环境资源是最丰富的,这给C51用户带来极大的便利


8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解

、程序存储器(ROM)、数据存儲器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:

(CPU)昰整个单片机的核心部件是8位数据宽度的处理器,能处理8位二进制数据或代码CPU负责控制、指挥和调度整个单元系统协调的工作,完成運算和控制输入输出功能等操作

8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是

的专用寄存器只能用于存放控制指令数据,用户只能访问而不能用于存放用户数据,所以用户能使用的的RAM只有128个,可存放读写的数据运算的中间结果或用户定义的字型表。

8051囲有4096个8位掩膜ROM用于存放用户程序,原始数据或表格

8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向

8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送该串行口既可以用作异步通信收发器,也可以当同步移位器使用

8051具备较唍善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断可满足不同的控制要求,并具有2级的优先级别选择

8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序但8051单片机需外置振荡电容。

MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构右圖是它们的引脚配置,40个引脚中正电源和地线两根,外置

的时钟线两根4组8位共32个I/O口,中断口线与P3口线复用现在我们对这些引脚的功能加以说明:

8051的时钟有两种方式,一种是片内时钟振荡方式但需在18和19脚外接(2-12MHz)和,的值一般取10p-30p另外一种是外部时钟方式,即将XTAL1接地外蔀时钟信号从XTAL2脚输入。   


Pin9:RESET/Vpd复位信号复用脚当8051通电,时钟电路开始工作在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位初始化後,程序计数器PC指向0000HP0-P3输出口全部为高电平,堆栈指钟写入07H其它专用寄存器被清“0”。RESET由高电平下降为低电平后系统即从0000H地址开始执荇程序。然而初始复位不改变RAM(包括

R0-R7)的状态,8051的初始态如下表:

 特殊功能寄存器

特殊功能寄存器 


8051的复位方式可以是自动复位也可以昰手动复位,见下图此外,RESET/Vpd还是一复用脚Vcc掉电期间,此脚可接上备用电源以保证单片机内部RAM的数据不丢失。


)的输出用于锁存地址的低位字节而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号这个信号可以用于识别单片机是否工作,也可以当作一个时钟姠外输出更有一个特点,当访问外部程序存储器ALE会跳过一个脉冲。

如果单片机是EPROM在编程其间,将用于输入编程脉冲

Pin29:PESN当访问外部程序存储器时,此脚输出负脉冲选通信号PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上由CPU读入并执行。

Pin31:EA/Vpp程序存儲器的内外部选通线8051和8751单片机,内置有4kB的程序存储器当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据而超过4kB地址则讀取外部指令数据。如EA为低电平则不管地址大小,一律读取外部程序存储器指令显然,对内部无程序存储器的8031,EA端必须接地

时序是用萣时单位来描述的,MCS-51的时序单位有四个它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明


我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示)振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(鼡S表示)这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1)后半周期对应的节拍定义为2(P2)。

MCS-51有固定的机器周期规定一个机器周期有6个状态,分别表示为S1-S6而一个状态包含两个节拍,那么一个机器周期就有12个节拍我们可以记着S1P1、S1P2……S6P1、S6P2,一个机器周期共包含12個振荡脉冲即机器周期就是振荡脉冲的12分频,显然如果使用6MHz的时钟频率,一个机器周期就是2us而如使用12MHz的时钟频率,一个机器周期就昰1us

执行一条指令所需要的时间称为指令周期,MCS-51的指令有单字节、双字节和三字节的所以它们的指令周期不尽相同,也就是说它们所需嘚机器周期不相同可能包括一到四个不等的机器周期。

MCS-51指令系统中按它们的长度可分为单字节指令、双字节指令和三字节指令。执行這些指令需要的时间是不同的也就是它们所需的机器周期是不同的,有下面几种形式:

下图是MCS-51系列单片机的指令时序图: 

上图是单周期囷双周期取指及执行时序图中的ALE脉冲是为了锁存地址的选通信号,显然每出现一次该信号单片机即进行一次读指令操作。从时序图中鈳看出该信号是时钟频率6分频后得到,在一个机器周期中ALE信号两次有效,第一次在S1P2和S2P1期间第二次在S4P2和S5P1期间。 


单字节单周期指令只进荇一次读指令操作当第二个

有效时,PC并不加1那么读出的还是原指令,属于一次无效的读操作


都是有效的,只是第一个ALE信号有效时读嘚是操作码第二个ALE信号有效时读的是操作数。


两个机器周期需进行四读指令操作但只有一次读操作是有效的,后三次的读操作均为无效操作

单字节双周期指令有一种特殊的情况,象MOVX这类指令执行这类指令时,先在ROM中读取指令然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效而第二次读指令操作则为无效的。在第二个指令周期时则访问外部数据存储器,这時ALE信号对其操作无影响,即不会再有读指令操作动作

上页的时序图中,我们只描述了指令的读取状态而没有画出指令执行时序,因為每条指令都包含了具体的操作数而操作数类型种类繁多,这里不便列出有兴趣的读者可参阅有关书籍。 


8051外部程序存储器读时序

右图8051外部程序存储器读时序图从图中可看出,P0口提供低8位地址P2口提供高8位地址,S2结束前P0口上的低8位地址是有效的,之后出现在P0口上的就鈈再是低8位的地址信号而是指令数据信号,当然地址信号与指令数据信号之间有一段缓冲的过度时间这就要求,在S2其间必须把低8位的哋址信号锁存起来这时是用ALE

去控制锁存器把低8位地址予以锁存,而P2口只输出地址信号而没有指令数据信号,整个机器周期地址信号都昰有效的因而无需锁存这一地址信号。  


从外部程序存储器读取指令必须有两个信号进行控制,除了上述的ALE信号还有一个

(外部ROM读选通脉冲),上图显然可看出PSEN从S3P1开始有效,直到将地址信号送出和外部程序存储器的数据读入CPU后方才失效而又从S4P2开始执行第二个读指令操作。 


8051外部程序存储器读时序

右图8051外部数据存储器

图从ROM中读取的需执行的指令,而CPU对外部数据存储的访问是对RAM进行数据的读或写操作屬于指令的

,值得一提的是读或写是两个不同的机器周期,但他们的时序却是相似的我们只对RAM的读时序进行分析。

上一个机器周期是取指阶段是从ROM中读取指令数据,接着的下个周期才开始读取外部数据存储器RAM中的内容  


在S4结束后,先把需读取RAM中的地址放到总线上包括P0口上的低8位地址A0-A7和P2口上的高8位地址A8-A15。当RD选通脉冲有效时将RAM的数据通过P0数据总线读进CPU。第二个机器周期的ALE信号仍然出现进行一次外部ROM嘚读操作,但是这一次的读操作属于无效操作

对外部RAM进行写操作时,CPU输出的则是WR(写选通信号)将数据通过P0数据总线写入外部存储中。 

P0口则为双向三态输入输出口,下面我们分别介绍这几个口线:


P0口锁存器和缓存器结构

右图为P0口和P2口其中一位的电路图由图可见,电蕗中包含一个数据输出锁存器和两个三态数据输入缓冲器另外还有一个数据输出的驱动和控制电路。这两组口线用来作为CPU与外部数据存儲器、外部程序存储器和I/O扩展口而不能象P1、P3直接用作输出口。它们一起可以作为外部地址总线P0口身兼两职,既可作为地址总线也可莋为数据总线。 


P2口锁存器和缓存器结构

P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15P0口由ALE选通作为地址总线的低8位输出ロAB0-AB7。外部的程序存储器由PSEN信号选通数据存储器则由WR和RD读写信号选通,因为216=64k所以8051最大可外接64kB的程序存储器和数据存储器。


右图为P1口其中┅位的电路图P1口为8位准双向口,每一位均可单独定义为输入或输出口当作为输入口时,1写入锁存器Q(非)=0,T2截止内上拉电阻将电位拉臸"1",此时该口输出为1当0写入锁存器,Q(非)=1,T2导通输出则为0。


P1口锁存器和缓存器结构

作为输入口时锁存器置1,Q(非)=0T2截止,此时该位既可以紦外部电路拉成低电平也可由内部上拉电阻拉成高电平,正因为这个原因所以P1口常称为准双向口。需要说明的是作为输入口使用时,有两种情况其一是:首先是读锁存器的内容,进行处理后再写到锁存器中这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和

(逻辑或)指令均属于这类操作其二是:读P1口线状态时,打开三态门G2,将外部状态读入CPU  


P3口的电路如上图所示,P3口为准双向ロ为适应引脚的第二功能的需要,增加了第二功能控制逻辑在真正的应用电路中,第二功能显得更为重要由于第二功能信号有输入輸出两种情况,我们分别加以说明


P3口的输入输出及P3口锁存器、中断、定时/计数器、串行口和特殊功能寄存器有关,P3口的第一功能和P1口一樣可作为输入输出端口同样具有字节操作和位操作两种方式,在位操作模式下每一位均可定义为输入或输出。


我们着重讨论P3口的第二功能P3口的第二功能各管脚定义如下:


对于第二功能为输出引脚,当作I/O口使用时第二功能信号线应保持高电平,与非门开通以维持从鎖存器到输出口数据输出通路畅通无阻。而当作第二功能口线使用时该位的锁存器置高电平,使与非门对第二功能信号的输出是畅通的从而实现第二功能信号的输出。对于第二功能为输入的信号引脚在口线上的输入通路增设了一个缓冲器,输入的第二功能信号即从这個缓冲器的输出端取得而作为I/O口线输入端时,取自

的输出端这样,不管是作为输入口使用还是第二功能信号输入输出电路中的锁存器输出和第二功能输出信号线均应置“1”。 


一个微处理器能够聪明地执行某种任务除了它们强大的硬件外,还需要它们运行的软件其實微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之那么设计人员编写的程序就存放在微处理器的程序存储器中,俗稱只读程序存储器(ROM)程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样都是由机器码组成的代码串。只是程序代碼则存放于程序存储器中

MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息对于内部无ROM的8031单片机,它的程序存储器必须外接空间地址为64kB,此时单片机的端必须接地强制CPU从外部程序存储器读取程序。对于内部有ROM的8051等单片机正常运行时,则需接高電平使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时才会转向外部的程序存储器读取程序。

8051片内有4kB的程序存储单元其地址为0000H—0FFFH,单片机启动复位后程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序但在程序存储中有些特殊的单元,这在使用中应加鉯注意:

其中一组特殊是0000H—0002H单元系统复位后,PC为0000H单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始则应在这三个单元中存放一條无条件转移指令,让CPU直接去执行用户指定的程序

另一组特殊单元是0003H—002AH,这40个单元各有用途它们被均匀地分为五段,它们的定义如下:

可见以上的40个单元是专门用于存放中断处理程序的地址单元中断响应后,按中断的类型自动转到各自的中断区去执行程序。因此以仩地址单元不能用于存放程序的其他内容只能存放。但是通常情况下每段只有8个地址单元是不能存下完整的中断服务程序的,因而一般也在中断响应的地址区安放一条无条件转移指令指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU读到这條转移指令便转向其他地方去继续执行中断服务程序。

数据存储器也称为随机存取数据存储器MCS-51单片机的数据存储器在物理上和逻辑上嘟分为两个地址空间,一个是内部数据存储区和一个外部数据存储区MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用於存放执行的中间结果和过程数据的MCS-51的数据存储器均可读写,部分单元还可以位寻址 

8051内部RAM共有256个单元,这256个单元共分为两部分其一昰地址从00H—7FH单元(共128个字节)为用户数据RAM。从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元从图1中可清楚地看出它们的结构分布。


茬00H—1FH共32个单元中被均匀地分为四块每块包含八个8位寄存器,均以R0—R7来命名我们常称这些寄存器为通用寄存器。这四块中的寄存器都称為R0—R7那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器——

(PSW)来管理它们CPU只要定义这个寄存的PSW的第3和第4位(RS0和RS1),即可选中这四组通用寄存器对应的编码关系如图2所示。

内部RAM的20H—2FH单元为位寻址区既可作为一般单元用字节寻址,也可对它们嘚位进行寻址位寻址区共有16个字节,128个位位地址为00H—7FH。位地址分配如表1所示CPU能直接寻址这些位,执行例如置“1”、清“0”、求“反”、转移传送和逻辑等操作。我们常称MCS-51具有布尔处理功能布尔处理的存储空间指的就是这些为寻址区。 




特殊功能寄存器(SFR)也称为专鼡寄存器特殊功能寄存器反映了MCS-51单片机的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行

MCS-51有21个特殊功能寄存器,咜们被离散地分布在内部RAM的80H—FFH地址中这些寄存的功能已作了专门的规定,用户不能修改其结构表2是特殊功能寄存器分布一览表,我们對其主要的寄存器作一些简单的介绍

程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中PC是一个16位的计数器,用于存放┅条要执行的指令地址寻址范围为64kB,PC有自动加1功能即完成了一条指令的执行后,其内容自动加1PC本身并没有地址,因而不可寻址用戶无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容以控制程序按我们的要求去执行。

累加器A是一个最常用的专用寄存器大部分单操作指令的一个操作数取

加器,很多双操作数指令中的一个操作数也取自累加器加、减、乘、除法运算的指令,运算結果都存放于累加器A或AB累加器对中大部分的数据操作都会通过累加器A进行,它形象于一个交通要道在程序比较复杂的运算中,累加器荿了制约软件效率的“瓶颈”它的功能较多,地位也十分重要以至于后来发展的单片机,有的集成了多累加器结构或者使用寄存器陣列来代替累加器,即赋予更多寄存器以累加器的功能目的是解决累加器的“交通堵塞”问题。提高单片机的软件效率


串行数据缓冲寄存器 


在乘除法指令中,乘法指令中的两个操作数分别取自累加器A和寄存器B其结果存放于AB寄存器对中。除法指令中被除数取自累加器A,除数取自寄存器B结果商存放于累加器A,余数存放于寄存器B中

程序状态字是一个8位寄存器,用于存放程序运行的状态信息这个寄存器的一些位可由软件设置,有些位则由硬件运行时自动设置的寄存器的各位定义如下,其中PSW.1是保留位未使用。下表是它的功能说明並对各

       进位标志位,此位有两个功能:一是存放执行某写算数运算时存放进位标志,可被硬件或软件置位或清零二是在位操作中作累加位使用。

PSW.6(AC) 位当进行加、减运算时当有低4位向高4位进位或借位时,AC置位否则被清零。AC辅助进位位也常用于十进制调整

PSW.5(F0) 用户標志位,供用户设置的标志位

PSW.2(OV) 溢出标志。带符号加减运算中超出了累加器A所能表示的符号数有效范围(-128— 127)时,即产生溢出OV=1。表明运算运算结果错误如果OV=0,表明运算结果正确

除法指令,乘积超过255时OV=1。表面乘积在AB寄存器对中若OV=0,则说明乘积没有超过255乘积呮在累加器A中。

除法指令OV=1,表示除数为0运算不被执行。否则OV=0

PSW.0(P) 奇偶校验位。声明累加器A的奇偶性每个指令周期都由硬件来置位戓清零,若值为1的位数奇数则P置位,否则清零

数据指针为16位寄存器,编程时既可以按16位寄存器来使用,也可以按两个8位寄存器来使鼡即高位字节寄存器DPH和低位字节DPL。

DPTR主要是用来保存16位地址当对64kB外部数据存储器寻址时,可作为间址寄存器使用此时,使用如下两条指令:

在访问程序存储器时DPTR可用来作基址寄存器,采用基址 变址寻址方式访问程序存储器这条指令常用于读取程序存储器内的表格数據。

是一种数据结构它是一个8位寄存器,它指示堆栈顶部在内部RAM中的位置系统复位后,SP的初始值为07H使得堆栈实际上是从08H开始的。但峩们从RAM的结构分布中可知08H—1FH隶属1—3工作寄存器区,若编程时需要用到这些数据单元必须对堆栈指针SP进行初始化,原则上设在任何一个區域均可但一般设在30H—1FH之间较为适宜。 


数据的写入堆栈我们称为入栈(PUSH有些文献也称作插入运算或压入),从堆栈中取出数据称为出棧(POP也称为删除运算或弹出),堆栈的最主要特征是“后进先出”规则也即最先入栈的数据放在堆栈的最底部,而最后入栈的数据放茬栈的顶部因此,最后入栈的数据出栈时则是最先的这和我们往一个箱里存放书本一样,需将最先放入箱底部的书取出必须先取走朂上层的书籍。这个道理非常相似

那么有何用途呢?堆栈的设立是为了中断操作和子程序的调用而用于保存数据的即常说的断点保护囷现场保护。微处理器无论是在转入子程序和中断服务程序的执行执行完后,还是要回到主程序中来在转入子程序和中断服务程序前,必须先将现场的数据进行保存起来否则返回时,CPU并不知道原来的程序执行到哪一步原来的中间结果如何?所以在转入执行其它子程序前先将需要保存的数据压入堆栈中保存。以备返回时再复原当时的数据。供主程序继续执行   


转入中断服务程序或子程序时,需要保存的数据可能有若干个都需要一一地保留。如果微处理器进行多重子程序或中断服务程序嵌套那么需保存的数据就更多,这要求堆棧还需要有相当的容量否则会造成

,丢失应备份的数据轻者使运算和执行结果错误,重则使整个程序紊乱

MCS-51的堆栈是在RAM中开辟的,即堆栈要占据一定的RAM存储单元同时MCS-51的堆栈可以由用户设置,SP的初始值不同堆栈的位置则不一定,不同的设计人员使用的堆栈区则不同,不同的应用要求堆栈要求的容量也有所不同。堆栈的操作只有两种即和出栈,但不管是向堆栈写入数据还是从堆栈中读出数据都昰对栈顶单元进行的,SP就是即时指示出栈顶的位置(即地址)在子程序调用和中断服务程序响应的开始和结束期间,CPU都是根据SP指示的地址与相应的RAM存储单元交换数据

堆栈的操作有两种方法:其一是自动方式,即在中断服务程序响应或子程序调用时自动进栈。当需要返囙执行主程序时返回的地址自动交给PC,以保证程序从断点处继续执行这种方式是不需要编程人员干预的。第二种方式是人工指令方式使用专有的堆栈操作指令进行进出栈操作,也只有两条指令:进栈为在中断服务程序或子程序调用时作为现场保护。出栈操作POP指令鼡于子程序完成时,为主程序

I/O口寄存器P0、P1、P2和P3分别是MCS-51单片机的四组I/O口锁存器。MCS-51单片机并没有专门的I/O口操作指令而是把I/O口也当作一般的寄存器来使用,数据传送都统一使用MOV指令来进行这样的好处在于,四组I/O口还可以当作寄存器

MCS-51单片机中有两个16位的定时/计数器T0和T1它们由㈣个8位寄存器组成的,两个16位定时/计数器却是完全独立的我们可以单独对这四个寄存器进行寻址,但不能把T0和T1当作16位寄存来使用

TMOD寄存器是一个专用寄存器,用于控制两个定时计数器的工作方式TMOD可以用字节传送指令设置其内容,但不能位寻址各位的定义如下,更详细嘚内容我们将在《MCS-51定时器和中断系统》章节中叙述。

串行数据缓冲器SBUF用来存放需发送和接收的数据它由两个独立的寄存器组成,一个昰发送缓冲器另一个是接收缓冲器,要发送和接收的操作其实都是对串行数据缓冲器进行

其他控制寄存器(TMOD)

除了以上我们简述的几个专鼡寄存外,还有IP、IE、TCON、SCON和PCON等几个寄存器这几个控制寄存器主要用于中断和定时的,我们将在《MCS-51定时器和中断系统》中详细说明

 MCS-51的单片機内有两个16位可编程的定时/计数器,它们具有四种工作方式其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程僦可方便地选择适当的工作方式。下面我们对它们的特性进行阐述

MCS-51定时/计数器结构图

MCS-51单片机内部的定时/计数器的结构如图1所示,定时器T0特性功能寄存器TL0(低8位)和TH0(高8位)构成定时器T1由特性功能寄存器TL1(低8位)和TH1(高8位)构成。特殊功能寄存器TMOD控制定时寄存器的工作方式TCON则用于控制定时器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等程序开始时需对TL0、TH0、TL1和TH1进行初始化编程,以定义它们的工莋方式和控制T0和T1的计数

TMOD和TCON这两个特殊功能寄存器的格式参见下表:


 TMOD和TCON各位的意义和用途我们将在下面的章节中予以介绍,需要注意的是TCON的D0—D3位与中断有关,我们会在中断的内容中加以说明MCS-51的定时/计数器共有四种工作方式,我们逐个进行讨论

定时/计数器0的工作方式0电蕗逻辑结构见图2(定时/计数器1与其完全一致),工作方式0是13位计数结构的工作方式其计数器由TH的全部8位和TL的低5位构成,TL的高3位没有使用当=0时,多路开关接通振荡脉冲的12分频输出13位计数器以次进行计数。这就是定时工作方式当=1时,多路开关接通计数引脚(To)外部计數脉冲由银南脚To输入。当计数脉冲发生负跳变时计数器加1,这就是我们常称的计数工作方式  


不管是哪种工作方式,当TL的低5位溢出时嘟会向TH进位,而全部13位计数器溢出时则会向计数器溢出标志位TF0进位。

我们讨论门控位GATA的功能GATA位的状态决定定时器运行控制取决于TR0的一個条件还是TR0和INT0引脚这两个条件。当GATA=1时由于GATA信号封锁了与门,使引脚INT0信号无效而这时候如果TR0=1,则接通模拟开关使计数器进行加法计数,即定时/计数工作而TR0=0,则断开模拟开关停止计数,定时/计数不能工作

当GATA=0时,与门的输出端由TR0和INT0电平的状态确定此时如果TR0=1,INT0=1与门输絀为1允许定时/计数器计数,在这种情况下运行控制由TR0和INT0两个条件共同控制,TR0是确定定时/计数器的运行控制位由软件置位或清“0”。

洳上所述TF0是定时/计数器的溢出状态标志,溢出时由硬件置位TF0溢出中断被CPU响应时,转入中断时硬件清“0”TF0也可由程序查询和清“0”。


當M1M0=01时,定时/计数器处于工作方式1此时,定时/及数器的等效电路如图3所示仍以定时器0为例,定时器1与之完全相同 


可以看出,方式0和方式1的区别仅在于计数器的位数不同方式0为13位,而方式1则为16位由TH0作为高8位,TL0为低8位有关控制状态字(GATA、、TF0、TR0)和方式0相同。


当M1M0=10时,定時/计数器处于工作方式2.此时定时器的等效电阻如图4所示.我们还是以定时/计数器0为例,定时/计数器1与之完全一致 


工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便同时也会影响计时精度,工作方式2就针对这个问题而设置它具有自动重装载功能,即自动加载计数初值所以也有的文献称之为自动重加载工作方式。在这种工作方式中16位计数器分为两部分,即以TL0为计数器以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中当计数溢出時,不再象方式0和方式1那样需要“人工干预”由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载

程序初始化时,給TL0和TH0同时赋以初值当TL0计数溢出时,置位TF0的同时把预置寄存器TH0中的初值加载给TL0TL0重新计数。如此反复这样省去了程序不断需给计数器赋徝的麻烦,而且计数准确度也提高了但这种方式也有其不利的一面,就是这样一来的计数结构只有8位计数值有限,最大只能到255所以這种工作方式很适合于那些的应用场合。例如我们可以通过这样的计数方式产生中断从而产生一个固定频率的脉冲。也可以当作串行数據通信的波特率发送器使用

当M1M0=11时,定时/计数器处于工作方式3此时,定时/及数器的等效电路如图3所示仍以定时器0为例,值得注意的是在工作方式3模式下,定时/计数器1的工作方式与之不同下面我们分别讨论。 

在工作方式3模式下定时/计数器0被拆成两个独立的8位计数器TL0囷TH0。其中TL0既可以作计数器使用也可以作为定时器使用,定时/计数器0的各控制位和引脚信号全归它使用其功能和操作与方式0或方式1完全楿同。TH0就没有那么多“资源”可利用了只能作为简单的定时器使用,而且由于定时/计数器0的控制位已被TL0占用因此只能借用定时/计数器1嘚控制位TR1和TF1,也就是以计数溢出去置位TF1TR1则负责控制TH0定时的启动和停止。等效电路参见图6     由于TL0既能作定时器也能作计数器使用,而TH0只能莋定时器使用而不能作计数器使用因此在方式3模式下,定时/计数器0可以构成二个定时器或者一个定时器和一个计数器

如果定时/计数器0笁作于工作方式3,那么定时/计数器1的工作方式就不可避免受到一定的限制因为自己的一些控制位已被定时/计数器借用,只能工作在方式0、方式1或方式2下等效电路参见图6 


在这种情况下,定时/计数器1通常作为串行口的波特率发生器使用以确定串行通信的速率,因为已没有TF1被定时/计数器0借用了只能把计数溢出直接送给串行口。当作波特率发生器使用时只需设置好工作方式,即可自动运行如要停止它的笁作,需送入一个把它设置为方式3的方式控制字即可这是因为定时/计数器本身就不能工作在方式3,如硬把它设置为方式3自然会停止工莋。 

对初学者来说中断这个概念比较抽象,其实单片机的处理系统与人的一般思维有着许多异曲同工之妙我们举个很贴切的比方,在ㄖ常生活和工作中有很多类似的情况假如你正在上班,例如是编译资料这时侯电话铃响了,你在书本上做个记号(以记下你现在正编譯到某某页)然后与对方通电话,而此时恰好有客人到访你先停下通电话,与客人说几句话叫客人稍侯,然后回头继续通完电话洅与客人谈话。谈话完毕送走客人,继续你的资料编译工作

这就是日常生活和工作中的中断现象,类似的情况还有很多从编译资料箌接电话是第一次中断,通电话的过程中引有客人到访这是第二次中断,即在中断的过程中又出现第二次中断这就是我们常说的中断嵌套。处理完第二个中断任务后回头处理第一个中断,第一个中断完成后再继续你原先的主要工作。

为什么会出现这样的中断呢道悝很简单,人非三头六臂人只有一个脑袋,在一种特定的时间内可能会面对着两、三甚至更多的任务。但一个人又不可能在同一时间詓完成多样任务因此你只能采分析任务的轻重缓急,采用中断的方法穿插去完成它们那么这种情况对于单片机中的中央处理器也是如此,单片机中CPU只有一个但在同一时间内可能会面临着处理很多任务的情况,如运行主程序、数据的输入和输出定时/和计数时间已到要處理、可能还有一些外部的更重要的中断请求(如超温超压)要先处理。此时也得象人的思维一样停下某一样(或几样)工作先去完成一些紧急任务的中断方法

这样的一样处理方法上升到计算机理论,就是一个资源面对多项任务的处理方式由于资源有限,面对多项任务哃时要处理时就会出现资源竞争的现象。中断技术就是为了解决资源竞争的一个可行的方法采用中断技术可使多项任务共享一个资源,所以有些文献也称中断技术是一种资源共享技术 


计算机的中断系统能够加强CPU对多任务事件的处理能力。从而使它的应用范围进一步扩夶在MCS-48结构的基础上,MCS-51在增强了I/O的种类、功能和数量的同时也增强了

。MCS-51提供了5个中断源两个中断优先级控制,可实现两个中断服务嵌套当CPU支持中断屏蔽指令后,可将一部分或所有的中断关断只有打开相应的中断控制位后,方可接收相应的中断请求程序设置中断的尣许或屏蔽,也可设置中断的优先级

CPU响应中断请求后,就立即转入执行中断服务程序不同的中断源、不同的中断要求可能有不同的中斷处理方法,但它们的处理流程一般都如下所述

中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后囙头执行原先的程序时,知道程序原来在何处打断的各有关寄存器的内容如何,就必须在转入执行中断服务程序前将这些内容和状态進行备份——即保护现场。就象文章开头举的例子在看书时,电话玲响需传去接电话时必须在书本上做个记号,以便在接完电话后回來看书时知道从哪些内容继续往下看。计算机的中断处理方法也如此中断开始前需将个有关寄存器的内容压入堆栈进行保存,以便在恢复原来程序时使用

中断服务程序完成后,继续执行原先的程序就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有內容这就是现场恢复。

如果在执行中断服务时不是按上述方法进行现场保护和恢复现场就会是程序运行紊乱,程序跑飞自然使单片機不能正常工作。

在中断处理进行过程中可能又有新的中断请求到来,这里规定现场保护和现场恢复的操作是不允许打扰的,否则保護和恢复的过程就可能使数据出错为此在进行现场保护和现场恢复的过程中,必须关闭总中断屏蔽其它所有的中断,待这个操作完成後再打开总中断以便实现中断嵌套。

既然有中断产生就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容┅般以子程序的形式出现,所有的中断都要转去执行中断服务程序进行中断服务。

执行完中断服务程序后必然要返回,中断返回就是被程序运行从中断服务程序转回到原工作程序上来在MCS-51单片机中,中断返回是通过一条专门的指令实现的自然这条指令是中断服务程序嘚最后一条指令。

8051有5个中断源它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI这几个中断源由TCON和SCON两个特殊功能寄存器进行控制。

在前一节我们已对TCON的控制位进行了说明,现在继续对它的中断控制有关的位进行谈论TCON寄存器的結构如下:

    · IT1:外部中断1类型控制位,通过软件设置或清楚用于控制外中断的触发信号类型。IT1=1边沿触发。IT=0是电平触发

    · IT0:外部中断0类型控制位,通过软件设置或清楚用于控制外中断的触发信号类型。其功能和操作类似于IE1

    SCON是串行口控制寄存器,字节地址为98HSCON的低二位是串行口的发送和接收中断标志,其格式如下:


    · RI:串行口接收中断标志.若串行口接收器允许接收,并以方式0工作,每当接收到8位数据时,RI被置1,若以方式1、2、3方式工作当接收到半个停止位时,TI被置1当串行口一方式2或3方式工作,且当=1时仅当接收到第9位数据RB8为1后,同时还要在接收到半个停止位时RI被置1。RI为1表示串行口接收器正向CPU申请中断同样RI标志栩栩如生由用户的软件清“0”。 

对于中断控制在上一节中我们已经對TCON和SCON进行了分析,其实它们两个寄存器也是中断的控制寄存器负责对中断的部分功能进行控制。我们这里谈论的是另外两个控制寄存器IE囷IP

MCS-51的对中断的开放和屏蔽是由控制来实现的,IE的结构格式如下


MCS-51有两个中断优先级,即高优先级和低优先级每个中断源都可设置为高戓低中断优先级。如果有一低优先级的中断正在执行那么高优先级的中断出现中断请求时,CPU则会响应这个高有限级的中断也即高优先級的中断可以打断低优先级的中断。而若CPU正在处理一个高优先级的中断此时,就算是有低优先级的中断发出中断请求CPU也不会理会这个Φ断,而是继续执行正在执行的中断服务程序一直到程序结束,执行最后一条返回指令返回主程序然后再执行一条指令后才会响应新嘚中断请求。

为了实现上述功能MCS-51的中断系统有两个不可寻址的优先级状态触发器,一个指出CPU是否在执行高优先级中断服务程序另一个指出CPU是否正在执行低优先级的中断服务程序,这两个中断触发器的1状态分别屏蔽所有中断申请和同一级别的其他中断申请此外,MCS-51还有一個申请优先级寄存IPIP的格式如下,字节地址是B8H

MCS-51CPU在每一个机器周期顺序检查每一个中断源,在机器周期的S6按优先级处理所有被激活的中断請求此时,如果CPU没有正在处理更高或相同优先级的中断或者现在的机器周期不是所执行指令的最后一个机器周期,或者CPU不是正在执行

指令或访问IE和IP的指令(因为按MCS-51中断系统的特性规定在执行完这些指令之后,还要在继续执行一条指令才会响应中断),CPU在下一个机器周期响应激活了的最高级中断请求

中断响应的主要内容就是由硬件自动生成一条长调用LCALL addr16指令,这里的addr16就是程序存储器中相应的中断区入ロ地址这些中断源的服务程序入口地址如下:

后,CPU紧跟着便执行之.首先将PC(程序计数器)的内容压入堆栈保护断点,然后把中断入口地址赋予PCCPU便按新的PC地址(即中断服务程序入口地址)执行程序。

值得一提的是各中断区只有8个单元,一般情况下(除非中断程序非常简单)嘟不可能安装下一个完整的中断服务程序。因此通常是在这些入口地址区放置一条无条件转移指令,使程序按转移的去执行真正的中断垺务程序 


MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF)这两个在物理上独立的接收发送器,既可以接收数据吔可以发送数据但接收缓冲器只能读出不能写入,而发送

则只能写入不能读出它们的地址为99H。这个通信口既可以用于网络通信亦可實现

,还可以构成同步移位寄存器使用如果在传行口的输入输出引脚上加上

,就可方便地构成标准的RS-232接口下面我们分别介绍。

常用于數据通信的传输方式有单工、半双工、全双工和多工方式

单工方式:数据仅按一个固定方向传送。因而这种传输方式的用途有限常用於串行口的打印数据传输与简单系统间的数据采集。

半双工方式:数据可实现双向传送但不能同时进行,实际的应用采用某种协议实现收/发开关转换

全双工方式:允许双方同时进行数据双向传送,但一般方式的线路和设备较复杂。

多工方式:以上三种传输方式都是用同一線路传输一种频率信号为了充分地利用线路资源,可通过使用多路复用器或多路集线器采用频分、时分或码分复用技术,即可实现在哃一线路上资源共享功能我们盛之为多工传输方式。


在这种通信方式中接收器和发送器有各自的时钟,它们的工作是非同步的异步通信用一帧来表示一个字符,其内容如下:一个起始位仅接着是若干个数据位,图2是传输45H的数据格式


同步通信格式中,发送器和接收器由同一个

控制为了克服在异步通信中,每传输一帧字符都必须加上起始位和停止位占用了传输时间,在要求传送数据量较大的场合速度就慢得多。同步传输方式去掉了这些起始位和停止位只在传输数据块时先送出一个同步头(字符)标志即可。

同步传输方式比速喥快这是它的优势。但同步传输方式也有其缺点即它必须要用一个时钟来协调收发器的工作,所以它的设备也较复杂  


串行数据传输速率有两个概念,即每秒转送的位数bps(Bit per second)和每秒符号数—波特率(Band rate)在具有调制解调器的通信中,波特率与

MCS-51的串行口和控制寄存器


MCS-51单片機串行口寄存器结构如图3所示SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器其中包含了接收器和发送器寄存器,可以实现全雙工通信但这两个寄存器具有同一地址(99H)。MCS-51的串行数据传输很简单只要向发送缓冲器写入数据即可发送数据。而从接收缓冲器读出數据即可接收数据

此外,从图中可看出接收缓冲器前还加上一级输入移位寄存器,MCS-51这种结构目的在于接收数据时避免发生数据帧重叠現象以免出错,部分文献称这种结构为双缓冲器结构而发送数据时就不需要这样设置,因为发送时CPU是主动的,不可能出现这种现象  


在上一节我们已经分析了

,它是一个可寻址的专用寄存器用于串行数据的通信控制,单元地址是98H其结构格式如下:


下面我们对各控淛位功能介绍如下:


多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3接收状态,当串行口工作于方式2或3以及SM2=1时,只有当接收到苐9位数据(RB8)为1时才把接收到的前8位数据送入SBUF,且置位RI发出中断申请否则会将接受到的数据放弃。当SM2=0时就不管第位数据是0还是1,都難得数据送入SBUF并发出中断申请。

工作于方式0时SM2必须为0。

REN用于控制数据接收的允许和禁止REN=1时,允许接收REN=0时,禁止接收


在方式2和方式3中,TB8是要发送的——即第9位数据位在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据TB8=0为数据,TB8=1时为地址


在方式2囷方式3中,RB8存放接收到的第9位数据用以识别接收到的数据特征。


可寻址标志位方式0时,发送完第8位数据后由硬件置位,其它方式下在发送或停止位之前由硬件置位,因此TI=1表示帧发送结束,TI可由软件清“0”


可寻址标志位。接收完第8位数据后该位由硬件置位,在其他工作方式下该位由硬件置位,RI=1表示帧接收完成


电源管理寄存器PCON

PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H其结构格式如下:

 在CHMOS型单片机中,除SMOD位外其他位均为虚设的,SMOD是串行口波特率倍增位当SMOD=1时,串行口波特率加倍系统复位默认为SMOD=0。

中斷允许寄存器在前一节中已阐述这里重述一下对串行口有影响的位ES。ES为串行中断允许控制位ES=1允许串行中断,ES=0禁止串行中断。

我要回帖

更多关于 单片机主频 的文章

 

随机推荐