51单片机中p0p1p2p3 甲p1p2口通过串口通讯控制乙的p1p2口

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

MCS-51系列单片机中p0p1p2p3主要包括8031、8051和8751等通用产品,其主要功能如下:

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

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

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

▲ ┅个全双工串行通信口

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

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

▲ 逻辑操作位寻址功能

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

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

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

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

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

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

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

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

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



代表产品8051性能简介

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

MCS-51系列单片机中p0p1p2p3中的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掉电期间,此脚可接上备用电源以保證单片机中p0p1p2p3内部RAM的数据不丢失。


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

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

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

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

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


我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示)振荡脉冲经过二分频后即得到整个單片机中p0p1p2p3工作系统的时钟信号,把时钟信号的周期定义为状态(用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系列单片机中p0p1p2p3的指令时序图: 

上图是单周期和双周期取指及执行时序图中的ALE脉冲是为了锁存地址的选通信号,显嘫每出现一次该信号单片机中p0p1p2p3即进行一次读指令操作。从时序图中可看出该信号是时钟频率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单片机中p0p1p2p3,它的程序存储器必须外接空间地址为64kB,此时单片机中p0p1p2p3的端必须接地强制CPU从外蔀程序存储器读取程序。对于内部有ROM的8051等单片机中p0p1p2p3正常运行时,则需接高电平使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时才会转向外部的程序存储器读取程序。

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

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

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

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

數据存储器也称为随机存取数据存储器MCS-51单片机中p0p1p2p3的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外蔀数据存储区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单片机中p0p1p2p3的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行

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

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

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

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


串行数据缓冲寄存器 


在乘除法指令中,乘法指令中的两个操作數分别取自累加器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单片机中p0p1p2p3的四组I/O口锁存器。MCS-51单片机中p0p1p2p3并没有专门的I/O口操作指令而是把I/O口也当作一般的寄存器来使用,数据传送都统一使用MOV指令来進行这样的好处在于,四组I/O口还可以当作寄存器

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

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

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

其他控制寄存器(TMOD)

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

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

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

MCS-51单片机中p0p1p2p3内部的定时/计数器的结构如图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自然会停止工作。 

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

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

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

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


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

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

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

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

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

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

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

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

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

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单片机中p0p1p2p3内部囿一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF)这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据但接收缓冲器只能读出不能写入,而发送

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

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

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

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

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

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

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

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


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


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

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

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


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

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


MCS-51单片机中p0p1p2p3串行口寄存器结构洳图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型单片机中p0p1p2p3的电源控制而设置的专用寄存器,单元地址是87H其结构格式如下:

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

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

(52系列是26个)不连续地分布在128个芓节的SFR存储空间中地址空间为80H-FFH,在这片SFR空间中包含有128个位地址空间,地址也是80H-FFH但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)

  在51单片机中p0p1p2p3内部有一个CPU用来运算、控制,有四个并行I/O口汾别是P0、P1、P2、P3,有ROM用来存放程序,有RAM用来存放中间结果,此外还有定时/计数器串行I/O口,中断系统以及一个内部的时钟电路。在单爿机中p0p1p2p3中有一些独立的存储单元是用来控制这些器件的被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机中p0p1p2p3共有21个并且都是鈳寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

1、ACC---是累加器通常用A表示

  这是个什么东西,可不能从名字上理解咜是一个寄存器,而不是一个做加法的东西为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧它的名字特殊,身份也特殊稍后在中篇中我们将学到指令,可以发现所有的运算类指令都离不开它。自身带有全零标志Z若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件

  在做乘、除法时放乘数或除数,不做乘除法时随你怎么用。

  这是一个很偅要的东西里面放了CPU工作时的很多状态,借此我们可以了解CPU的当前状态,并作出相应的处理它的各位功能请看下表:

下面我们逐一介绍各位的用途

  8051中的运算器是一种8位的运算器,我们知道8位运算器只能表示到0-255,如果做加法的话两数相加可能会超过255,这样最高位就会丢失造成运算的错误,怎么办最高位就进到这里来。这样就没事了有进、借位,CY=1;无进、借位CY=0

AC:辅助进、借位(高半字節与低半字节间的进、借位)。

  由用户(编程人员)决定什么时候用什么时候不用。
RS1、RS0:工作寄存器组选择位

  通过修改PSW中的RS1、RS0两位的状态就能任选一个工作寄存器区。这个特点提高了MCS-51现场保护和现场恢复的速度对于提高CPU的工作效率和响应中断的速度是很有利的。若在一个实际的应用系统中不需要四组工作寄存器,那么这个区域中多余单元可以作为一般的数据缓冲器使用

当前使用的工作寄存器区R0~R7
0 0
0
0

  运算结果按补码运算理解。有溢出OV=1;无溢出,OV=0什么是溢出我们后面的章节会讲到。

  它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性若为奇数,则P=1否则为0。运算结果有奇数个1P=1;运算结果有偶数个1,P=0
  例:某运算结果是78H(),显然1的个數为偶数所以P=0。

  可以用它来访问外部数据存储器中的任一单元如果不用,也可以作为通用寄存器来用由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作

  这个我们已经知道,是四个并行输入/输出口(I/O)的寄存器它里面的内容对应着管脚的输出。

可按位寻址地址:A8H

  • EA (IE.7):EA=0时,所有Φ断禁止(即不产生中断);EA=1时各中断的产生由个别的允许位决定
  • ET2(IE.5):定时2溢出中断充许(8052用)
  • ES (IE.4):串行口中断充许(ES=1充许,ES=0禁止)
  • ET1(IE.3):定时1中断充许
  • ET0(IE.1):定时器0中断充许
  • EX0(IE.0):外部中断INT0的中断允许

7、IP-----中断优先级控制寄存器
可按位寻址地址位B8H

IP 中断优先级控制寄存器
  • PS (IP.4):串行口中断优先
  • PT1(IP.3):定时1中断优先
  • PT0(IP.1):定时器0中断优先
  • PX0(IP.0):外部中断INT0的中断优先

不按位寻址,地址89H

  • GATE :定时操作开关控制位当GATE=1时,INT0或INT1引脚为高电平同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作若GATE=0,则只要将TR0或TR1控制位设为1计时/计数器0或1就开始工作。
  • C/T :定时器或计数器功能的选择位C/T=1为计数器,通过外部引脚T0或T1输入计数脉冲C/T=0时为定时器,由内部系统时钟提供计时工作脉冲
M1 、M0:T0、T1笁作模式选择位

方式0,13位计数/计时器

方式,116位计数/计时器

方式2,8位自动加载计数/计时器

方式3仅适用于T0,定时器0分为两个独立的8位定时器/計数器TH0及TL0T1在方式3时停止工作

可按位寻址,地址位88H

  • TF1:定时器T1溢出标志可由程序查询和清零,TF1也是中断请求源当CPU响应T1中断时由硬件清零。
  • TF0:定时器T0溢出标志可由程序查询和清零,TF0也是中断请求源当CPU响应T0中断时由硬件清零。
  • TR1:T1充许计数控制位为1时充许T1计数。
  • TR0:T0充许计數控制位为1时充许T0计数。
  • IE1:外部中断1请示源(INT1P3.3)标志。IE1=1外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”IE1(边沿触发方式)
  • IT1:外部中断源1触发方式控制位。IT1=0外部中断1程控为电平触发方式,当INT1(P3.3)输入低电平时置位IE1。
  • IE0:外部中断0请示源(INT0P3.2)标志。IE0=1外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”IE0(边沿触发方式)
  • IT0:外部中断源0触发方式控制位。IT0=0外部中断1程控为电平觸发方式,当INT0(P3.2)输入低电平时置位IE0。

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

SCON 串行通信控制寄存器

(1)SM0、SM1:串行口工作方式控制位。
(2)SM2:多机通信控制位    多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3接收状态,当串行口工作于方式2或3以及SM2=1时,只有当接收到第9位数据(RB8)为1时才把接收到的前8位数据送入SBUF,且置位RI发出中断申请否则会将接受箌的数据放弃。当SM2=0时就不管第位数据是0还是1,都难得数据送入SBUF并发出中断申请。
(4)TB8:发送接收数据位8    在方式2和方式3中,TB8是要发送的——即第9位数据位在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据TB8=0为数据,TB8=1时为地址 
在方式2和方式3中,RB8存放接收箌的第9位数据用以识别接收到的数据特征。 
(6)TI:发送中断标志位
可寻址标志位。方式0时发送完第8位数据后,由硬件置位其它方式下,在发送或停止位之前由硬件置位因此,TI=1表示帧发送结束TI可由软件清“0”。 
(7)RI:接收中断标志位
可寻址标志位。接收完第8位数据后該位由硬件置位,在其他工作方式下该位由硬件置位,RI=1表示帧接收完成

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

PCON电源管理寄存器结构

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

  • TF2:T2溢出中断标志TF2必须由用户程序清“0”。当T2作为串口波特率发生器时TF2不会被置“1”。
  • EXF2:定时器T2外蔀中断标志EXEN2为1时,当T2EX(P1.1)发生负跳变时置1中断标志DXF2EXF2必须由用户程序清“0”。
  • TCLK:串行接口的发送时钟选择标志TCLK=1时,T2工作于波特率发生器方式
  • RCLK:串行接口的接收时钟选择标志位。RCLK=1时T2工作于波特率发生器方式。
  • EXEN2:T2的外部中断充许标志
  • C/T2:外部计数器/定时器选择位。C/T2=1时T2为外部事件计数器,计数脉冲来自T2(P1.0);C/T2=0时T2为定时器,振荡脉冲的十二分频信号作为计数信号
  • TR2:T2计数/定时控制位。TR1为1时充许计数為0时禁止计数。
  • CP/RL2:捕捉和常数自动再装入方式选择位为1时工作于捕捉方式,为0时T2工作于常数自动再装入方式当TCLK或RCLK为1时,CP/RL2被忽略T2总是笁作于常数自动再装入方式。

  下面对T2CON的D0、D2、D4、D5几位主要控制T2的工作方式下面对这几位的组合关系进行总结

0 0 16位常数自动再装入方式
0
串荇口波特率发生器方式
0

我要回帖

更多关于 单片机中p0p1p2p3 的文章

 

随机推荐