MCS-51单片机的指令时序
- 格式:doc
- 大小:123.00 KB
- 文档页数:9
一、51单片机的硬件结构1. 硬件结构框图说明:○1微处理器(CPU):51单片机含一个8位CPU,与通用的CPU功能基本相同,含运算器和控制器,不仅可以字节处理,还可以位处理。
例如:未处理、查表、状态检测、中断处理等。
○2数据存储器(RAM):51为128B,52为256B;片外最大可扩展到64K。
○3程序存储器(ROM/EPROM):8031没有,8051有4K的ROM,8751有4K的EPROM;片外可扩展至64K。
○4中断系统:5个中断源,2级优先权。
○5定时器/计数器:2个16位定时/计数器,四种工作方式。
○6串行口:1个全双工串行口,四种工作方式。
可进行串口通信,扩展并行I/O口,多机通信等。
○7P1、P2、P3、P0口:四个8位并行I/O口。
○8特殊功能寄存器(SFR):共21个,对片内部件进行管理、控制、监视;实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。
2. 引脚排列(1)电源及时钟引脚○1电源引脚:Vcc(40脚)解5V电源、Vss(20脚)接地。
○2时钟引脚:两个始终引脚XTAL1、XTAL2外接晶振,或接晶体与片内反相放大器构成振荡器。
XTAL1(19脚):内部反相放大器的输入端。
若接晶振则应接地;XTAL2(18脚):内部反相放大器的输出端。
若采用外部时钟振荡器,该引脚接收时钟振荡信号。
(2)控制引脚○1RST/Vpd(9脚):复位信号输入,高电平有效。
单片机运行时,此脚持续2个机器周期(24个时钟振荡周期)的高电平,就可复位。
平时应为0.5V低电平;Vpd为第二功能,备用电源输入端。
○2:ALE为地址锁存允许,正常工作时,ALE不断输出正脉冲信号。
当访问外部存储器时,ALE输出信号的负跳变沿用作低8位地址的锁存信号;PROG’为编程脉冲输入端。
○3PSEN’(Program Strobe Enable,29脚):程序存储器允许输出控制端。
低电平是外部程序存储器选通。
MCS-51单片机指令周期表mcs-51指令速查表类别指令格式功能简述字节数周期MOV A,Rn寄存器送累加器11MOV Rn,A累加器送寄存器11MOV A,@Ri内部RAM单元送累加器11MOV@Ri,A累加器送内部RAM单元11MOV A,#data立即数送累加器21MOV A,direct直接寻址单元送累加器21MOV direct,A累加器送直接寻址单元21MOV Rn,#data立即数送寄存器21MOV direct,#data立即数送直接寻址单元32MOV@Ri,#data立即数送内部RAM单元21MOV direct,Rn寄存器送直接寻址单元22数据传送类指令期MOV Rn,direct直接寻址单元送寄存器22MOV direct,@Ri内部RAM单元送直接寻址单元22MOV@Ri,direct直接寻址单元送内部RAM单元22MOV direct2,direct1直接寻址单元送直接寻址单元32MOV DPTR,#data1616位立即数送数据指针32MOVX A,@Ri外部RAM单元送累加器(8位地址)12MOVX@Ri,A累加器送外部RAM单元(8位地址)12MOVX A,@DPTR外部RAM单元送累加器(16位地址)12MOVX@DPTR,A累加器送外部RAM单元(16位地址)12MOVC A,@A+DPTR查表数据送累加器(DPTR为基址)12MOVC A,@A+PC查表数据送累加器(PC为基址)12XCH A,Rn累加器与寄存器交换11算术运算类指令XCH A,@Ri累加器与内部RAM单元交换11XCHD A,direct累加器与直接寻址单元交换21XCHD A,@Ri累加器与内部RAM单元低4位交换11SWAP A累加器高4位与低4位交换11POP direct栈顶弹出指令直接寻址单元22PUSH direct直接寻址单元压入栈顶22ADD A,Rn累加器加寄存器11ADD A,@Ri累加器加内部RAM单元11ADD A,direct累加器加直接寻址单元21ADD A,#data累加器加立即数21ADDC A,Rn累加器加寄存器和进位标志11ADDC A,@Ri累加器加内部RAM单元和进位标志11ADDC A,#data累加器加立即数和进位标志21ADDC A,direct累加器加直接寻址单元和进位标志21INC A累加器加111INC Rn寄存器加111INC direct直接寻址单元加121INC@Ri内部RAM单元加111INC DPTR数据指针加112DA A十进制调整11SUBB A,Rn累加器减寄存器和进位标志11SUBB A,@Ri累加器减内部RAM单元和进位标志11SUBB A,#data累加器减立即数和进位标志21SUBB A,direct累加器减直接寻址单元和进位标志21DEC A累加器减111DEC Rn寄存器减111DEC@Ri内部RAM单元减111DEC direct直接寻址单元减121MUL AB累加器乘寄存器B14DIV AB累加器除以寄存器B14ANL A,Rn累加器与寄存器11逻辑运算类指令ANL A,@Ri累加器与内部RAM单元11ANL A,#data累加器与立即数21ANL A,direct累加器与直接寻址单元21ANL direct,A直接寻址单元与累加器21ANL direct,#data直接寻址单元与立即数31ORL A,Rn累加器或寄存器11ORL A,@Ri累加器或内部RAM单元11ORL A,#data累加器或立即数21ORL A,direct累加器或直接寻址单元21ORL direct,A直接寻址单元或累加器21ORL direct,#data直接寻址单元或立即数31XRL A,Rn累加器异或寄存器11XRL A,@Ri累加器异或内部RAM单元11XRL A,#data累加器异或立即数21XRL A,direct累加器异或直接寻址单元21XRL direct,A直接寻址单元异或累加器21XRL direct,#data直接寻址单元异或立即数32RL A累加器左循环移位11RLC A累加器连进位标志左循环移位11RR A累加器右循环移位11RRC A累加器连进位标志右循环移位11CPL A累加器取反11CLR A累加器清零11ACCALL addr112KB范围内绝对调用22AJMP addr112KB范围内绝对转移22LCALL addr162KB范围内长调用32LJMP addr162KB范围内长转移32SJMP rel相对短转移22JMP@A+DPTR相对长转移12RET子程序返回12RET1中断返回12控制转移类指令JZ rel累加器为零转移22JNZ rel累加器非零转移22CJNE A,#data,rel累加器与立即数不等转移32CJNE A,direct,rel累加器与直接寻址单元不等转移32CJNE Rn,#data,rel寄存器与立即数不等转移32CJNE@Ri,#data,rel RAM单元与立即数不等转移32DJNZ Rn,rel寄存器减1不为零转移22DJNZ direct,rel直接寻址单元减1不为零转移32NOP空操作11MOV C,bit直接寻址位送C21MOV bit,C C送直接寻址位21CLR C C清零11CLR bit直接寻址位清零21CPL C C取反11CPL bit直接寻址位取反21SETB C C置位11SETB bit直接寻址位置位21布尔操作类指令ANL C,bit C逻辑与直接寻址位22ANL C,/bit C逻辑与直接寻址位的反22ORL C,bit C逻辑或直接寻址位22ORL C,/bit C逻辑或直接寻址位的反22JC rel C为1转移22JNC rel C为零转移22JB bit,rel直接寻址位为1转移32JNB bit,rel直接寻址为0转移32JBC bit,rel直接寻址位为1转移并清该位32。
MCS-51单⽚机的硬件结构MCS-51单⽚机的基本组成MCS-51是Intel公司⽣产的⼀个单⽚机系列的总称.在功能上,该系列单⽚机有基本型和增强型两⼤类,通常以芯⽚型号的末位数字来区别。
末位数字位“1”的型号是基本型,为“2”的信号是增强型。
MCS-51单⽚机的内部结构如图所⽰,基本结构包括:⼀个8位的CPU及⽚内振荡器;4KB掩膜ROM(8051),4KB EPROM(8751),⽆ROM(8031);128B RAM,21个特殊功能寄存器SFK;4个(P0~P3)8位并⾏I/O接⼝,⼀个可编程全双⼯通⽤异步串⾏接⼝(UART);具有5个中断源,2个优先级;可寻址64KB 的⽚外ROM和64KB的⽚外RAM;两个16位的定时/计数器;具有位操作功能的布尔处理机及位寻址功能。
MCS-51单⽚机的引脚及其功能MCS-51单⽚机的引脚封装MCS-51单⽚机有普通的HMOS芯⽚和CMOS低功耗芯⽚。
HMOS芯⽚采⽤双列直插封装⽅式,⽽CMOS芯⽚采⽤的封装⽅式有双列直插也有⽅形封装的。
尽管封装的⽅式不同,但是它们的结构完全⼀样。
输⼊/输出接⼝MCS-51单⽚机有4个双向8位I/O接⼝,它们是P0、P1、P2、P3。
在⽆外接存储器时,这4个I/O接⼝均可以作为通⽤I/O接⼝使⽤,CPU既可以对它们进⾏字节操作也可以进⾏位操作。
当外接程序存储器或数据存储器时,P0⼝和P2⼝不再作为通⽤I/O⼝使⽤。
此时,P0⼝传送存储器地址的低8位以及双向的8位数据,P2⼝传送存储器地址的⾼8位。
P0⼝和P2共同组成MCS-51单⽚机的16位地址总线,⽽低8位地址总线与8位双向数据总线分时复⽤。
P0⼝P0⼝有8位,每⼀位由⼀个锁存器、两个三态输⼊缓冲器、控制电路和驱动电路组成。
P0⼝有两种功能,⼀是作为通⽤I/O⼝;⼆是当外接存储器时,作为低8位地址总线和8位双向数据总线。
P0 ⼝作为通⽤I/O ⼝作为通⽤I/O ⼝时,P0 ⼝既可以做输⼊⼝,也可以做输出⼝,并且每⼀位都可以设定为输⼊或输出。
MCS-51单片机的指令时序时序是用定时单位来描述的,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指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。
执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:·单字节指令单机器周期·单字节指令双机器周期·双字节指令单机器周期·双字节指令双机器周期·三字节指令双机器周期·单字节指令四机器周期(如单字节的乘除法指令)下图是MCS-51系列单片机的指令时序图:上图是单周期和双周期取指及执行时序,图中的ALE脉冲是为了锁存地址的选通信号,显然,每出现一次该信号单片机即进行一次读指令操作。
MCS-51单片机的指令时序时序是用定时单位来描述的,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指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。
执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:·单字节指令单机器周期·单字节指令双机器周期·双字节指令单机器周期·双字节指令双机器周期·三字节指令双机器周期·单字节指令四机器周期(如单字节的乘除法指令)下图是MCS-51系列单片机的指令时序图:上图是单周期和双周期取指及执行时序,图中的ALE脉冲是为了锁存地址的选通信号,显然,每出现一次该信号单片机即进行一次读指令操作。
从时序图中可看出,该信号是时钟频率6分频后得到,在一个机器周期中,ALE信号两次有效,第一次在S1P2和S2P1期间,第二次在S4P2和S5P1期间。
接下来我们分别对几个典型的指令时序加以说明。
·单字节单周期指令:单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,那么读出的还是原指令,属于一次无效的读操作。
·双字节单周期指令:这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。
·单字节双周期指令:两个机器周期需进行四读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。
单字节双周期指令有一种特殊的情况,象MOVX这类指令,执行这类指令时,先在ROM中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效,而第二次读指令操作则为无效的。
在第二个指令周期时,则访问外部数据存储器,这时,ALE信号对其操作无影响,即不会再有读指令操作动作。
上页的时序图中,我们只描述了指令的读取状态,而没有画出指令执行时序,因为每条指令都包含了具体的操作数,而操作数类型种类繁多,这里不便列出,有兴趣的读者可参阅有关书籍。
·外部程序存储器(ROM)读时序中可看出,P0口提供低8位地址,P2口提供高8位地址,S2结束前,P0口上的低8位地址是有效的,之后出现在P0口上的就不再是低8位的地址信号,而是指令数据信号,当然地址信号与指令数据信号之间有一段缓冲的过度时间,这就要求,在S2其间必须把低8位的地址信号锁存起来,这时是用ALE选通脉冲去控制锁存器把低8位地址予以锁存,而P2口只输出地址信号,而没有指令数据信号,整个机器周期地址信号都是有效的,因而无需锁存这一地址信号。
从外部程序存储器读取指令,必须有两个信号进行控制,除了上述的ALE信号,还有一个PSEN(外部ROM读选通脉冲),上图显然可看出,PSEN从S3P1开始有效,直到将地址信号送出和外部程序存储器的数据读入CPU后方才失效。
而又从S4P2开始执行第二个读指令操作。
·外部数据存储器(RAM)读时序右图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数据总线写入外部存储使用ALE信号作为低8位地址的锁存控制信号。
ALE接到外部锁存器时,高电平期间,51的p0输出地址,低电平时锁存器将地址锁存,在ALE低电平时,(PSEN为低)p0口可以传输数据(指令),这样就可以地址/数据复用了。
以PSEN信号作为扩展程序存储器的读选通信号,在读外部ROM是PSEN是低电平有效,以实现对ROM 的读操作。
以EA信号作为内外程序存储器的选择控制信号,当其为低电平时,对ROM的读操作限定在外部的程序存储器,当其为高电平时, 对ROM的读操作是从内部存储器开始的,并可延至外部程序存储器.由RD和WR信号作为扩展数据存储器和I/O口的读选通、写选通信号。
EA信号是表示是当前指令是读内,还是外存储器的控制信号。
如:当选用无片内存储器的单片机,或者不打算用片内存储器时,EA必须接低电平,此外,片外程序存储器的起始地址应该安排在片内存储器之后。
RD和WR信号就相对好理解,就是当读数据时(不分内外、RAM、ROM)它就有效。
WR也是这样的。
80C51单片机指令的取指、执行时序现按4类指令介绍CPU时序。
因为CPU工作的过程就是取指令与执行指令的过程,所以CPU必须先取出指令,然后才能执行指令。
1.双字节单周期指令由于双字节单周期指令必须在一个周期内取机器码二次,所以必须在一个机器周期内安排二次读操作码的操作,分别发生在S1P2与S4P2。
在S1P2读入机器码74并送入指令寄存器IR,在S4P2读入数据03送入累加器A,即读2取2。
在指令的执行过程中,P0口要分时传送地址与数据,因此当操作码的地址从P0口输出后,必须发地址锁存信号ALE 给74LS373锁存器,将地址锁存在74LS373内,腾出P0口读入机器码74。
在取数据03时同样要发ALE信号。
因此,在一个机器周期内地址锁存信号二次有效,见80C51时序图2-13。
2.单字节单周期指令对单字节单周期指令,由于操作码只有一个字节,因此第一次读操作码有效,而第二次读的操作码将被丢弃,即:读1丢1,且程序计数器PC不加1。
3.单字节双周期指令对单字节双周期指令,由于操作码只有一个字节,而执行时间长达2个机器周期,因此除第1次读操作码有效外,其余三次读的操作码均被放弃,即:读1丢3。
4.访问外部存储器指令MOVX执行访问外部存储器指令MOVX时,首先从程序存储器中取出指令,然后从外部数据存储器中取出数据,因此该指令执行时序图与前三类指令不同。
由于MOVX是单字节双周期指令,所以在取指令阶段(即第一个机器周期的S1P1到S4P2)是读1丢1,而在执行指令读数据阶段(即第一个机器周期的S5到第二个机器周期的S3)所完成的操作如下:(1)先将外部数据存储单元的地址ADDR由DPTR从P0与P2口输出,即时序图中的S5P1到S6P2阶段。
并在S4P2到S5P2阶段,发ALE信号将地址锁存。
(2)在第二个机器周期S1P2到S2P2内取消ALE与程序选通信号PSEN(即取消取指操作),使P0口专门用于传送数据。
同时发读信号,通过P0口将外部数据存储单元中的数据传送到累加器A中。
即:时序图的S6P2到S4P1阶段。
(3)由于锁存的地址为外部数据存储单元的地址,所以在第二个机器周期S4取消取指令的操作,即:不再发程序选通信号PSEN 。
注:由于执行MOVX指令时,在第二个机器周期中要少发一次ALE信号,所以ALE的频率是不稳定的。
晶振电路—单片机的心脏2011-06-03 12:59晶振电路的原理晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。
由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。
这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。
晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。
一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容,请注意一般IC的引脚都有等效输入电容,这个不能忽略。
一般的晶振的负载电容为15p或12.5p ,如果再考虑元件引脚的等效输入电容,则两个22p的电容构成晶振的振荡电路就是比较好的选择。
晶体振荡器也分为无源晶振和有源晶振两种类型。
无源晶振与有源晶振(谐振)的英文名称不同,无源晶振为crystal(晶体),而有源晶振则叫做oscillator(振荡器)。
无源晶振需要借助于时钟电路才能产生振荡信号,自身无法振荡起来,所以“无源晶振”这个说法并不准确;有源晶振是一个完整的谐振振荡器。
谐振振荡器包括石英(或其晶体材料)晶体谐振器,陶瓷谐振器,LC谐振器等。
晶振与谐振振荡器有其共同的交集有源晶体谐振振荡器。
石英晶片所以能做振荡电路(谐振)是基于它的压电效应,从物理学中知道,若在晶片的两个极板间加一电场,会使晶体产生机械变形;反之,若在极板间施加机械力,又会在相应的方向上产生电场,这种现象称为压电效应。
如在极板间所加的是交变电压,就会产生机械变形振动,同时机械变形振动又会产生交变电场。
一般来说,这种机械振动的振幅是比较小的,其振动频率则是很稳定的。