《单片机技术与实践教案暂定稿新精选PPT.ppt》由会员分享,可在线阅读,更多相关《单片机技术与实践教案暂定稿新精选PPT.ppt(105页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机技术与实践教案暂定稿单片机技术与实践教案暂定稿新新第1页,此课件共105页哦资料路径资料路径1:http:/ 每条指令在执行时要花去一定的每条指令在执行时要花去一定的时间时间,以机器周,以机器周期为单位。期为单位。按指令执行时间分类:按指令执行时间分类:单周期单周期(64条条);双周期双周期(45条条);4周期周期(2条条)按指令的功能分类按指令的功能分类,可分为,可分为5大类:大类:数据传送类数据传送类(28条条);算术运算类;算术运算类(24条条)逻辑运算及移位类逻辑运算及移位类(25条条);控制转移类;控制转移类(17条条)位操位操作类作类(17条条)每条指令在程序存储器每条指令在
2、程序存储器ROM中占据一定的中占据一定的空间空间,以字节为单位。以字节为单位。按指令所占字节数分类:按指令所占字节数分类:单字节单字节(49条条);双字节双字节(45条条);3字节字节(17条条)第4页,此课件共105页哦MCS-51单片机指令系统有如下特点:单片机指令系统有如下特点:(1)指令执行时间快。指令执行时间快。(2)指令短,约有一半的指令为单字节指令。指令短,约有一半的指令为单字节指令。(3)用一条指令即可实现用一条指令即可实现2个一字节的相乘或个一字节的相乘或 相除。相除。(4)具有丰富的位操作指令。具有丰富的位操作指令。(5)可直接用传送指令实现端口的输入输出操作。可直接用传送
3、指令实现端口的输入输出操作。第5页,此课件共105页哦1、时序分析、时序分析计算机工作时,是在计算机工作时,是在统一的时钟脉冲控统一的时钟脉冲控制下一拍一拍地进行制下一拍一拍地进行的。这个脉冲是由单片的。这个脉冲是由单片机控制器中的时序电路发出的。单片机的时机控制器中的时序电路发出的。单片机的时序就是序就是CPUCPU在执行指令时所需控制信号的时在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地片机内部电路应在唯一的时钟信号下严格地控时序进行工作。控时序进行工作。第6页,此课件共105页哦计算机是在统一
4、的时钟脉冲控制下工作的,计算机是在统一的时钟脉冲控制下工作的,那么,它的时钟脉冲是怎么来的呢?那么,它的时钟脉冲是怎么来的呢?要给我们的计算机要给我们的计算机CPU提供时序,就需提供时序,就需要相关的硬件电路,即振荡器和时钟电路。要相关的硬件电路,即振荡器和时钟电路。51系列单片机内部有一个系列单片机内部有一个高增益反相放大器高增益反相放大器,这,这个反相放大器的作用就是用于构成振荡器用的,个反相放大器的作用就是用于构成振荡器用的,但要形成时钟,外部还需要加一些附加电路。但要形成时钟,外部还需要加一些附加电路。第7页,此课件共105页哦XTAL1XTAL1XTAL2XTAL2通常外接一个通常外
5、接一个晶振两个电容晶振两个电容1 1M MCS-51CS-51系列系列 方式一:利用内部的振荡器,在引脚Xtal1和Xtal2两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30pf左右;这两个电容对频率有微调的作用,晶振的频率范围可在1.2MHz-12MHz之间选择。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。第8页,此课件共105页哦1 1M MCS-51CS-51系列系列XTAL1XTAL1XTAL2XTAL2外部时钟信号外部时钟信号方式二:是利用外部振荡脉冲接入XTAL1或X
6、TAL2(18)。HMOS和CHMOS单片机外时钟信号接入方式不同,HMOS型单片机(例如8051)外时钟信号由XTAL2端脚注入后直接送至内部时钟电路,输入端XTAL1应接地。由于XTAL2端的逻辑电平不是TTL的,故建议外接一个上接电阻。80518051外时钟源接法图外时钟源接法图第9页,此课件共105页哦1 1M MCS-51CS-51系系列列XTAL1XTAL1XTAL2XTAL2外部时钟信号外部时钟信号方式二:对于CHMOS型的单片机(例如80C51),因内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外时钟信号接到XTAL1而XTAL2悬空。如下图本脚悬空本脚
7、悬空80C5180C51外时钟源接法图外时钟源接法图第10页,此课件共105页哦 目前各大厂商推出的各类单片机产品都采用了目前各大厂商推出的各类单片机产品都采用了CHMOS工艺。工艺。80C51系列单片机采用两种半导体工艺生产。一种是系列单片机采用两种半导体工艺生产。一种是HMOS工艺工艺,即高密度短沟道即高密度短沟道MOS工艺工艺。另外一种是另外一种是CHMOS工艺,即互补金属氧化物的工艺,即互补金属氧化物的HMOS工艺工艺。CHMOS是是CMOS和和HMOS的结合,除保持了的结合,除保持了HMOS的高速度和高的高速度和高密度的特点之外,还具有密度的特点之外,还具有CMOS低功耗的特点。低功
8、耗的特点。例如例如8051的功耗为的功耗为630mw,而,而80C51的功耗只有的功耗只有120mw。在便携。在便携式、手提式或野外作业仪器设备上低功耗是非常有意义的。式、手提式或野外作业仪器设备上低功耗是非常有意义的。因此,在这些产品中必须使用因此,在这些产品中必须使用CHMOS的单片机芯片。的单片机芯片。第11页,此课件共105页哦由于指令的字节数不同,取这些指令所由于指令的字节数不同,取这些指令所需要的时间也就不同,即使是字节数相同的需要的时间也就不同,即使是字节数相同的指令,由于执行操作有较大的差别,不同的指令,由于执行操作有较大的差别,不同的指令执行时间也不一定相同,即所需的拍节指令
9、执行时间也不一定相同,即所需的拍节数不同。为了便于对数不同。为了便于对CPU时序进行分析,一时序进行分析,一般按指令的执行过程规定了几种周期,即时般按指令的执行过程规定了几种周期,即时钟钟(振荡振荡)周期、机器周期和指令周期,周期、机器周期和指令周期,也称也称为时序定时单位。为时序定时单位。第12页,此课件共105页哦回顾内容回顾内容振荡振荡(时钟时钟)周期周期=晶振频率晶振频率fosc的倒数;的倒数;1个机器周期个机器周期=6个状态周期个状态周期;=12个振荡周期个振荡周期(时钟周期时钟周期);1个指令周期个指令周期=1、2、4个机器周期个机器周期P1P2S1振荡振荡(时钟时钟)周期周期机器
10、周期机器周期机器周期机器周期指令周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2状态周期状态周期第13页,此课件共105页哦通常含一个机器周期的指令称为单周期指通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。令,包含两个机器周期的指令称为双周期指令。MCS-51指令系统中,按它们的长度可分指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们行这些指令需要的
11、时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:所需的机器周期是不同的,有下面几种形式:单字节指令单机器周期;单字节指令双机器周期;单字节指令单机器周期;单字节指令双机器周期;双字节指令单机器周期;双字节指令双机器周期;双字节指令单机器周期;双字节指令双机器周期;三字节指令双机器周期;三字节指令双机器周期;单字节指令四机器周期单字节指令四机器周期(如单字节的乘除法指令如单字节的乘除法指令)第14页,此课件共105页哦图中的ALE脉冲是为了锁存地址的选通信号,显然,每出现一次该信号单片机即进行一次读指令操作。从时序图中可看出,该信号是时钟频率6分频后得到,在一个机器周期中,ALE
12、信号两次有效。个机器周期个机器周期ALE第15页,此课件共105页哦单字节单周期指令例:INC AALE个机器周期个机器周期单字节单周期指令:单字节单周期指令:单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,那么读出的还是原指令,属于一次无效的读操作。第16页,此课件共105页哦双字节单周期指令例:ADD A,DATA双字节单周期指令:双字节单周期指令:这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。ALE第17页,此课件共105页哦单字节双周期指令:单字节双周期指令:两个机器周期需进行四读指令操作,
13、但只有一次读操作是有效的,后三次的读操作均为无效操作。ALE单字节双周期指令例:INC DPTR第18页,此课件共105页哦 若若MCS-51单单片片机机外外接接晶晶振振为为fosc=12MHz时时,则单片机的四个周期的具体值为:则单片机的四个周期的具体值为:Tosc=振荡周期振荡周期1/12MHz1/12s0.0833sTcy=机器周期振荡周期机器周期振荡周期*12 1s指令周期指令周期14s 在在MCS-51指令系统中,单字节、双字节指指令系统中,单字节、双字节指令占绝大多数,三字节指令很少令占绝大多数,三字节指令很少(13条条)。单字节或双字节指令可能是单周期或双周期的,三字节指令是双周
14、期的,乘除指令是四周期的,因此,振荡频率为12MHz时,指令执行时间分别为时,指令执行时间分别为1s1s、2s、4s。第19页,此课件共105页哦 在在MCS-51MCS-51指指令令中中,一一般般指指令令主主要要由由操操作作码、操作数组成。码、操作数组成。指令应具有以下功能:指令应具有以下功能:(1)(1)操作码指明执行什么性质和类型的操操作码指明执行什么性质和类型的操 作。例如,数的传送、加法、减法等。作。例如,数的传送、加法、减法等。(2)(2)操作数指明操作的数本身或者是操作操作数指明操作的数本身或者是操作 数所在的地址。数所在的地址。(3)(3)指定操作结果存放的地址。指定操作结果存
15、放的地址。2、指令格式、指令格式第20页,此课件共105页哦单字节指令单字节指令 操作码和操作数在同一个字节中。操作码和操作数在同一个字节中。双字节指令双字节指令 前一个字节为操作码,后一个字节为操前一个字节为操作码,后一个字节为操作数。作数。三字节指令三字节指令 前一个字节为操作码,后两个字节为操前一个字节为操作码,后两个字节为操作数。作数。第21页,此课件共105页哦指令描述符号介绍指令描述符号介绍 Rn当当前前选选中中的的寄寄存存器器区区中中的的8个个工作寄存器工作寄存器R0R7(n=07)。Ri当当前前选选中中的的寄寄存存器器区区中中的的2个个工作寄存器工作寄存器R0、R1(i=0,1
16、)。direct8位位的的内内部部数数据据存存储储器器单单元元中中的地址。的地址。#表表明明其其后后跟跟的的是是立立即即数数(就就是是数数字量本身字量本身),有,有8位、位、16位常数。位常数。addr1616位目的地址。位目的地址。addr1111位目的地址。位目的地址。第22页,此课件共105页哦 rel 8位带符号的偏移字节,简称偏移量。位带符号的偏移字节,简称偏移量。DPTR 数据指针,可用作数据指针,可用作16位地址寄存器。位地址寄存器。bit 内部内部RAM或专用寄存器中的直接寻址位。或专用寄存器中的直接寻址位。A 累加器。累加器。B 专用寄存器,用于乘法和除法指令中。专用寄存器,
17、用于乘法和除法指令中。C 进位标志或进位位,或布尔处理机中的进位标志或进位位,或布尔处理机中的 累加器。累加器。寄存器间接寻址或基址寄存器的前缀,寄存器间接寻址或基址寄存器的前缀,如如Ri,DPTR。第23页,此课件共105页哦 /位位操操作作数数的的前前缀缀,表表示示对对该该位位数数操作取反,如操作取反,如/bit/bit。()()片内片内RAMRAM的直接地址或寄存器。的直接地址或寄存器。()()由由寻址的单元中的内容。寻址的单元中的内容。箭头左边的内容被箭头右边的内箭头左边的内容被箭头右边的内 容所代替。容所代替。箭箭头头右右边边的的内内容容被被箭箭头头左左边边的的 内所代替。内所代替。
18、第24页,此课件共105页哦3.1、延时分析、延时分析观察观察仿真教学练习仿真教学练习1单灯亮灭概念单灯亮灭概念1下的仿真下的仿真实验例题实验例题LJ20080304。结果有两个问题:第一,计算机执行指令的时结果有两个问题:第一,计算机执行指令的时间很快,执行完间很快,执行完SETB P1.0后,灯是灭了,后,灯是灭了,但在极短时间但在极短时间(微秒级微秒级)后,计算机又执行了后,计算机又执行了CLR P1.0指令,灯又亮了,所以根本分辨不指令,灯又亮了,所以根本分辨不出灯曾灭过。第二,在执行完出灯曾灭过。第二,在执行完CLR P1.0后,后,跳转再去执行跳转再去执行SETB P1.0指令,结
19、果闪烁不指令,结果闪烁不定定(又称余辉或鬼影又称余辉或鬼影)。(实物与仿真效果差别实物与仿真效果差别)第25页,此课件共105页哦3.2、解决方案、解决方案为了解决这两个问题,我们可以做如下设为了解决这两个问题,我们可以做如下设想,第一,在执行完想,第一,在执行完SETB P1.0后,延时一段后,延时一段时间时间(几秒或零点几秒几秒或零点几秒)再执行第二条指令,就再执行第二条指令,就可以分辨出灯曾灭过了。第二在执行完第二条可以分辨出灯曾灭过了。第二在执行完第二条指令后,让计算机再去执行第一条指令,不断指令后,让计算机再去执行第一条指令,不断地在原地兜圈,我们称之为地在原地兜圈,我们称之为“循环
20、循环”,这样就可,这样就可以完成任务了。以完成任务了。第26页,此课件共105页哦3.3、程序分析程序分析;主程序:;主程序:LOOP:SETB P1.0;P1.0引脚灯灭引脚灯灭LCALL DELAY;延时延时CLR P1.0 ;P1.0引脚灯亮引脚灯亮LCALL DELAY;延时延时AJMP LOOP;跳转跳转;以下是延时子程序;以下是延时子程序DELAY:MOV R7,#250;工作寄存器工作寄存器R7赋值赋值D1:MOV R6,#250;工作寄存器工作寄存器R6赋值赋值D2:DJNZ R6,D2;R6如果不等于如果不等于0,就转移至,就转移至D2 DJNZ R7,D1;R6如果不等于如
21、果不等于0,就转移至,就转移至D2 RET ;子程序返回指令子程序返回指令END ;程序结束指令程序结束指令LED亮灭有定之观察实例:亮灭有定之观察实例:仿真教学练习仿真教学练习1单灯单灯亮灭概念亮灭概念1LJ20080304C.ASM第27页,此课件共105页哦DELAY:MOV R7,#250;将将250传送至传送至R7D1:MOV R6,#250;将将250传送至传送至R7 D2:DJNZ R6,D2 ;原地转圈原地转圈250次次 DJNZ R7,D1;RET 指令分析:指令分析:MOV:意思是传递数据。从指令意思是传递数据。从指令MOV Ri,#250中来分析,中来分析,Ri是一个接受
22、者,是一个接受者,250是被传递的数。是被传递的数。(i=6、7)DJNZ:指令的执行过程,它将其后面的指令的执行过程,它将其后面的第一个参数第一个参数中的值中的值减减1,然后看一下,这个值是否等于,然后看一下,这个值是否等于0,如果等于,如果等于0,就往下,就往下执行,如果不等于执行,如果不等于0,就转移至,就转移至第二个参数第二个参数所指位置。所指位置。最终最终DJNZ R6,D2指令将被执行指令将被执行250*250=62500次次第28页,此课件共105页哦我们来计算刚才的延时,首先必须要知道晶振的我们来计算刚才的延时,首先必须要知道晶振的频率,我们设所用晶振为频率,我们设所用晶振为1
23、2M,则一个机器周期就是,则一个机器周期就是1微秒。而微秒。而DJNZ指令是双周期指令指令是双周期指令,所以执行一次要,所以执行一次要2个微秒个微秒。一共执行。一共执行62500次,正好次,正好125000微秒微秒,也就是也就是125毫秒毫秒。要点分析:要点分析:1、一个单元中的数是否可以超过、一个单元中的数是否可以超过255;2、如何分配两个数。、如何分配两个数。3.4、延时估算延时估算第29页,此课件共105页哦在单片机的控制应用中在单片机的控制应用中,常有延时的需要,常有延时的需要,CPU过一段时间再去作某件事情过一段时间再去作某件事情,称之为延时。称之为延时。延时有两种方法,延时有两种
24、方法,即软件延时和硬件延时即软件延时和硬件延时.硬件硬件延时是延时是通过定时通过定时/计数器来实现计数器来实现的,这种方法不的,这种方法不占用占用CPU的工作时间。的工作时间。软件延时一般采用循环软件延时一般采用循环程序程序,通过,通过CPU执行一个具有固定延迟时间的执行一个具有固定延迟时间的循环体来实现的。循环体来实现的。3.5、延时精确计算过程延时精确计算过程第30页,此课件共105页哦延时程序的延时时间主要与两个因素有关,延时程序的延时时间主要与两个因素有关,一是所用晶振,二是延时程序中的循环次数,一是所用晶振,二是延时程序中的循环次数,一旦晶振确定之后,则主要是如何设计与计算一旦晶振确
25、定之后,则主要是如何设计与计算需给定的延时循环次数。需给定的延时循环次数。设单片机的晶振频率为设单片机的晶振频率为6MHz,则一机器周期,则一机器周期为为2us;设单片机的晶振频率为设单片机的晶振频率为12MHz,则一机器周期,则一机器周期为为1us;第31页,此课件共105页哦汇编语言常用延时程序所用到的指令汇编语言常用延时程序所用到的指令指令指令 占用的机器周期数占用的机器周期数MOV Rn,#Data 1DJNZ Rn,Rel 2RET 2NOP 1ACALL Addr11 2LCALL Addr16 2ADD A,Ri 1INC DPTR 2用得最多的用得最多的延时指令延时指令第32页
26、,此课件共105页哦基本延时程序模式及延时时间的计算基本延时程序模式及延时时间的计算分以下几种情况分以下几种情况:1、单循环延时程序、单循环延时程序DEL2:MOV R0,#X ;1周期周期DEL1:DJNZ R0,DEL1 ;2周期周期 RET ;2周期周期延时时间延时时间=2*X*T+1*T+2*T=(2X+3)T整个程序的整个程序的延时时间范围延时时间范围以晶振频率以晶振频率6MHz为例为例:10us=t=1030us;以晶振频率以晶振频率12MHz为例为例:5us=t=515us;第33页,此课件共105页哦延时时间的范围的计算延时时间的范围的计算设设X是装入寄存器是装入寄存器R0的时
27、间常数,的时间常数,R0是是8位寄存器位寄存器(以下的以下的R1、R2、Ri均为均为8位位),因为,因为0=R0=255,R0=0,延时时间,延时时间最长,最长,R0=1,延时时间最短。当,延时时间最短。当Ri=0时,时,由汇编语言的特征知其将从零开始判断,由汇编语言的特征知其将从零开始判断,共共256次,所以应在公式中代入次,所以应在公式中代入256,因,因此这个程序的最长定时时间为此这个程序的最长定时时间为1030us。第34页,此课件共105页哦2 2、双重循环延时程序、双重循环延时程序:DEL3:MOV R1,#Y ;1周期周期DEL2:MOV R0,#X ;1周期周期DEL1:DJN
28、Z R0,DEL1 ;2周期周期 DJNZ R1,DEL2 ;2周期周期 RET ;2周期周期延时时间延时时间=(2*X+1+2)*Y*T+1*T+2*T=(2XY+3Y+3)T整个程序的整个程序的延时范围为延时范围为:16us=t=263668us;第35页,此课件共105页哦3 3、三重循环延时程序、三重循环延时程序DEL4:MOV R2,#Z ;1周期周期DEL3:MOV R1,#Y ;1周期周期DEL2:MOV R0,#X ;1周期周期DEL1:DJNZ R0,DEL1 ;2周期周期 DJNZ R1,DEL2 ;2周期周期 DJNZ R2,DEL3 ;2周期周期 RET ;2周期周期延
29、时时间延时时间=(2*X+1+2)*Y+1+2*Z*T+1*T+2*T =(2XYZ+3YZ+3Z+3)T整个程序的整个程序的延时时间范围为延时时间范围为:22us=tNew Design”,出现选择模板窗口,可任选。,出现选择模板窗口,可任选。第58页,此课件共105页哦4、设定绘图纸大小、设定绘图纸大小当前用户图纸大小默认当前用户图纸大小默认A4纸,若要改变图纸大小,纸,若要改变图纸大小,单出菜单中的单出菜单中的“System-Set Sheet Size”,弹出下图,可供图纸选择或自定义。弹出下图,可供图纸选择或自定义。第59页,此课件共105页哦5、选取元器件并添加、选取元器件并添加到
30、对象选择器中到对象选择器中单击下图中的单击下图中的“P”按钮,弹出元器按钮,弹出元器件选择对话框件选择对话框(右图右图)。选取方法:。选取方法:“关键字查找法关键字查找法”、“分类查找分类查找法法”第60页,此课件共105页哦6、网格单位网格单位:默认是:默认是100th,在菜单中,在菜单中“View”中可调;中可调;7、放置、移动、旋转元器件放置、移动、旋转元器件;8、放置电源、地放置电源、地(终端终端):单击模式选择工具栏单击模式选择工具栏中的的终端按钮中的的终端按钮9、电路图布线电路图布线;10、设置、修改元设置、修改元器件属性器件属性;第61页,此课件共105页哦11、电气规则检测电气
31、规则检测:设计电路完成之后,单击电气规:设计电路完成之后,单击电气规则检测按钮,会出现检查结果窗口,前面是一些文则检测按钮,会出现检查结果窗口,前面是一些文本信息,接着是电气检查结果列表,若有错,会有相本信息,接着是电气检查结果列表,若有错,会有相应说明,也可以通过菜单操作应说明,也可以通过菜单操作“Tools-Electrical Rule Check”12、源程序设计、源程序设计(编写编辑源程序、编译源程序、生编写编辑源程序、编译源程序、生成目标代码成目标代码);13、加载目标代码文件、设置时钟频率;、加载目标代码文件、设置时钟频率;14、上电仿真。、上电仿真。第62页,此课件共105页哦
32、ISIS ISIS 智能原理图输入流程智能原理图输入流程开始开始新建设计文档新建设计文档设置编辑环境设置编辑环境放置元器件放置元器件原理图连线原理图连线建立网络表建立网络表电气规则检查电气规则检查存盘、报表输出存盘、报表输出结束结束调整调整是否合格是否合格NY设置编辑环境:设置编辑环境:用户可自定义图形外用户可自定义图形外观,包括线宽、填充类型、字符等。观,包括线宽、填充类型、字符等。原理图连线:原理图连线:点击元件引脚或者点击元件引脚或者先前连好的线,就能实现连线;先前连好的线,就能实现连线;也可使用自动连线工具连线;也可使用自动连线工具连线;建立网络表:建立网络表:网络表是电路板与电网络表
33、是电路板与电路原理图之间的纽带。建立的网表路原理图之间的纽带。建立的网表用于用于PCB制板。制板。报表输出:报表输出:材料报表、材料报表、ERC报表报表等。等。第63页,此课件共105页哦PROTEUSPROTEUS设计与仿真流程设计与仿真流程Proteus电路设计电路设计源程序编辑源程序编辑生成目标代码文件生成目标代码文件加载目标代码文件加载目标代码文件设置时钟频率设置时钟频率ProteusProteus仿真仿真 因在单片机的属因在单片机的属性窗口中,可以设置性窗口中,可以设置时钟频率,并以其为时钟频率,并以其为准,所以在编辑区设准,所以在编辑区设计仿真电路时,可以计仿真电路时,可以略去振荡
34、电路。复位略去振荡电路。复位电路也可以略去,引电路也可以略去,引脚也可悬空。但若要脚也可悬空。但若要进行电路电气规则检进行电路电气规则检测,则不可略去。测,则不可略去。第64页,此课件共105页哦分类指令分类指令、数据传送类指令、算术运算类指令、逻辑运算与循环类指令、程序转移类指令、调用子程序及返回指令、位操作指令、空操作指令第65页,此课件共105页哦数据传送类指令 数据传送类指令共28条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。源操作数可采用寄存
35、器、寄存器间接、直接、立即、变址5种寻址方式寻址,目的操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。MCS-51单片机片内数据传送途径如图3-6所示。第66页,此课件共105页哦直接地址直接地址directdirect累加器累加器A A直接地址直接地址directdirect间接地址间接地址RiRi寄存器寄存器RnRn立即数立即数#data#data寄存器寄存器DPTRDPTR图图3-6 MCS-51单片机片内数据传送图单片机片内数据传送图第67页,此课件共105页哦1 1以以A A为目的操作数为目的操作数MOV A,Rn ;A RnMOV A,direct;A(direct)MOV
36、 A,Ri ;A(Ri)MOV A,#data ;A#data例:MOV A,R1 MOV A,10H MOV A,R1 MOV A,#30H第68页,此课件共105页哦2 2以以RnRn为目的操作数为目的操作数MOV Rn,A ;Rn AMOV Rn,direct;Rn(direct)MOV Rn,#data ;Rn#data例:MOV R1,A MOV R1,10H MOV R1,#10H第69页,此课件共105页哦3 3以直接地址为目的操作数以直接地址为目的操作数MOV direct,A ;(direct)AMOV direct,Rn ;(direct)(Rn)MOV direct1,d
37、irect2;(direct1)(direct2)MOV direct,Ri ;(direct)(Ri)MOV direct,#data ;(direct)#data第70页,此课件共105页哦4 4以间接地址为目的操作数以间接地址为目的操作数MOV Ri,A ;(Ri)AMOV Ri,direct;(Ri)(direct)MOV Ri,#data;(Ri)#data例如:设(30H)=6FH,R1=40H,执行MOV R1,30H后,30H单元中数据取出6FH送 入 R1间 接 寻 址 的 40H单 元,(40H)=6FH。第71页,此课件共105页哦5 5以以DPTRDPTR为目的操作数为
38、目的操作数MOV DPTR,#data16;DPTR#data16例例如如执执行行 MOV DPTR,#2000H后后,(DPTR)=2000H。第72页,此课件共105页哦6 6访问外部数据访问外部数据RAM RAM MOVX A,DPTR;A (DPTR)MOVX DPTR,A;(DPTR)AMOVX A,Ri ;A (P2Ri)MOVX Ri,A ;(P2Ri)A例如例如:MOV R0,A 若若执执行行前前:ACC=12H,R0=22H,存存贮贮器器(22H)地址的内容为地址的内容为56H执执 行行 后后:ACC=12H,R0=22H,存存 贮贮 器器(22H)地址的内容为地址的内容为1
39、2H第73页,此课件共105页哦7 7读程序存储器读程序存储器MOVC A,A+DPTR;A (A+DPTR)MOVC A,A+PC ;A (A+PC)例如例如:若执行前若执行前A=10H,DPTR=2000H,程序存储器单元程序存储器单元(2010H)=64H指令指令:MOVC A,A+DPTR执执行行前前:A=10H,DPTR=2000H,程程序序存存储储器单元器单元(2010H)=*H。(A)=*H第74页,此课件共105页哦图图3-4 3-4 变址寻址示意图变址寻址示意图程序存储器程序存储器DPTRA2010H64H2000H2000H10H生成数据地址编号生成数据地址编号2010H1
40、0H64HMOVC A,A+DPTR;A(A+DPTR):第75页,此课件共105页哦8 8数据交换数据交换字节交换字节交换XCH A,Rn ;A RnXCH A,direct ;A(direct)XCH A,Ri ;A(Ri)半字节交换半字节交换XCHD A,Ri ;A03(Ri)03SWAP A ;A03A47第76页,此课件共105页哦9 9堆栈操作堆栈操作 所谓堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈出栈由指针SP统一管理。堆栈的操作有如下两条专用指令:PUSH direct ;SP(SP+1),(SP)(direct)POP direct ;(di
41、rect)(SP),SP SP-1上述两条指令执行过程分析如下:第77页,此课件共105页哦片 内RAM30H11H10HSP40H片 内RAM50H40H11H10H50HSP30H片 内RAM40H11H10H34HSP30H34H34H执行前执行前执行PUSH指令后执行POP指令后图图3-7 3-7 指令指令PUSHPUSH操作示意图操作示意图图图3-8 3-8 指令指令POPPOP操作示意图操作示意图片 内RAM50H40H11H10HSP30H堆栈指令的静态执行过程观察图堆栈指令的静态执行过程观察图第78页,此课件共105页哦34H片 内RAM40H11H10H34HSP30H图图3
42、-7 3-7 指令指令PUSHPUSH执行过程示意图执行过程示意图图图3-8 3-8 指令指令POPPOP执行过程示意图执行过程示意图片 内RAM50H40H11H10HSP30H50H堆栈指令的动态执行过程演示图堆栈指令的动态执行过程演示图第79页,此课件共105页哦【例3.1】将片内RAM 30H单元与40H单元中的内容互换。方法方法1(直接地址传送法直接地址传送法):MOV31H,30H MOV30H,40H MOV40H,31H SJMP$方法方法2(间接地址传送法间接地址传送法):MOVR0,#40H MOVR1,#30H MOVA,R0 MOVB,R1 MOVR1,A MOVR0,
43、B SJMP$第80页,此课件共105页哦方法方法3(字节交换传送法字节交换传送法):MOV A,30H XCH A,40H MOV 30H,A SJMP$方法方法4(堆栈传送法堆栈传送法):PUSH 30H PUSH 40H POP30H POP40H SJMP$第81页,此课件共105页哦算术运算类指令算术运算类指令1加法指令加法指令ADD A,Rn ;A A+RnADD A,direct ;A A+(direct)ADD A,Ri ;A A+(Ri)ADD A,#data ;A A+#data第82页,此课件共105页哦2带进位加指令带进位加指令ADDC A,Rn ;A A+Rn+CAD
44、DC A,direct;A A+(direct)+CADDC A,Ri ;A A+(Ri)+CADDC A,#data;A A+#data+CC为来自为来自PSW状态寄存器中的进位位状态寄存器中的进位位C。指令指令:ADDC A,R0执行前执行前:A=20H,R0=21H,C=1执行后执行后:A=42H,R0=21H,C=1 第83页,此课件共105页哦3带借位减指令带借位减指令SUBB A,Rn ;A A-Rn-CSUBB A,direct ;A A-(direct)-CSUBB A,Ri ;A A-(Ri)-CSUBB A,#data ;A A-#data C指令指令:SUBB A,R0执
45、行前执行前:A=39H,R0=20H,(20H)=32H,C=1执行后执行后:A=06H,.第84页,此课件共105页哦4乘法指令乘法指令MUL A,B;BA AB A和和B中中各各存存放放一一个个8位位无无符符号号数数,指指令令执执行行后后,16位位乘乘积积的的高高8位位在在B中中,低低8位存位存A中。中。指令指令:MUL AB 执行前执行前:A=30H,B=60H,执行后执行后:A=00H,B=12H。第85页,此课件共105页哦 5除法指令除法指令 DIV A,B ;AB商在商在A中中,余数在余数在B中中 A和和B中中各各存存放放一一个个8位位无无符符号号数数,A放放被被除除数数,B放放
46、除除数数。指指令令执执行行后后,A中中存存放放商商,B中中存存入入余余数数。若若B=00H,则则指指令令执执行行后后OV=1,A与与B不变。不变。指令指令:DIV AB 执行前执行前:A=30H,B=07H,执行后执行后:A=06H,B=06H。第86页,此课件共105页哦6加加1指令指令INC A ;A A+1INC Rn ;Rn Rn+1INC direct ;(direct)(direct)+1INC Ri ;(Ri)(Ri)+1INC DPTR ;DPTR DPTR+1指令指令:INC 30H 执行前执行前:(30H)=22H,执行后执行后:(30H)=23H。第87页,此课件共105
47、页哦7减减1指令指令DEC A ;A A-1DEC Rn ;Rn Rn-1DEC direct;direct(direct)-1DEC Ri ;(Ri)(Ri)-1指令指令:DEC R0执行前执行前:R0=30H,(30H)=22H,执行后执行后:R0=30H,(30H)=21H。第88页,此课件共105页哦8十进制调整指令十进制调整指令DA A ;把把A中中按按二二进进制制相相加加的的结结果果调调整整成成按按BCD码相加的结果。码相加的结果。指令序列指令序列:ADDA,B DAA执行前执行前:A=65BCD,B=78BCD,C=0,执行后执行后:A=43BCD,B=78BCD,C=1。第89
48、页,此课件共105页哦【例例题题】把把存存放放在在R1R2和和R3R4中中的的两两个个16位数相加,结果存于位数相加,结果存于R5R6中。中。解:参考程序如下:解:参考程序如下:MOV A,R2 ;取第一个数的低取第一个数的低8位位 ADD A,R4 ;两数的低两数的低8位相加位相加 MOV R6,A ;保存和的低保存和的低8位位 MOV A,R1;取第一个数的高取第一个数的高8位位 ADDCA,R3;两两数数的的高高8位位相相加加,并把低并把低8位相加时的进位位加进来位相加时的进位位加进来 MOV R5,A ;把把相相加加的的高高8位位存存入入R5寄存器中寄存器中 SJMP$第90页,此课件
49、共105页哦1 1“与与”操作指令操作指令 2 2“或或”操作指令操作指令3 3“异或异或”操作指令操作指令4 4求反与清除指令求反与清除指令5 5移位指令移位指令逻辑运算类指令第91页,此课件共105页哦逻辑与逻辑与(ANL),逻辑或逻辑或(ORL),逻辑异或逻辑异或(XRL)累加器清零累加器清零/取反操作取反操作(CLR,CPL2条条)CLR A 对累加器清零对累加器清零 CPL A 对累加器按位取非对累加器按位取非指指 令令 形形 式式ByteTmANL(ORL,XRL)direct,A21ANL(ORL,XRL)direct,#data32ANL(ORL,XRL)A,#data21AN
50、L(ORL,XRL)A,direct21ANL(ORL,XRL)A,Ri11ANL(ORL,XRL)A,Rn11第92页,此课件共105页哦逻辑运算指令的常见用法逻辑运算指令的常见用法逻辑与逻辑与ANL用于用于清清0或者或者保留保留某些位:某些位:例例:ANL A,#0FH;则则(A)=0AH(设累加器设累加器A中内容为:中内容为:9AH )逻辑或逻辑或ORL用于用于置置1或者或者保留保留某些位:某些位:例例:ORL A,#0FH;则则(A)=9FH逻辑异或逻辑异或XRL用于用于取反取反或者或者保留保留某些位:某些位:例例:XRL A,#0FH;则则(A)=95H (A)1001 1010#0