《《单片机授课》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《单片机授课》PPT课件.ppt(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章概论一.什么是单片机:单片机的分类:二位单片机;四位单片机;八位单片机;十六位单片机.单片机的功能:实时控制系统的核心,硬件、软件、外设单片机是怎么工作的:复位程序计数器代码译码器、控制指令执行二进制数和电平的一一对应关系二单片机开发系统:LY001单片机仿真开发系统介绍硬件简介:自主开发:单片机仿真开发系统下位机实验箱单片机开发系统界面介绍功能介绍:1编译1)写入程序2)程序调试3)在线仿真运行LY001单片机仿真开发系统的操作第二章第二章 MCS51MCS51系列单片机的结系列单片机的结构构2.1MCS51的结构和引脚2.28051单片机存储器结构及其用途2.3并行I/O口2.4时钟
2、电路2.5复位电路2.6思考题与习题2.1.1引脚定义及功能8051单片机芯片采用40引脚,双列直插封装(DIP)方式引脚和逻辑符号如图2-1-2所示。其中某些引脚具有双重功能简要说明如下:1电源引脚:VCC(40脚):供电电源+5V。VSS(20脚):接地线。2时钟电路引脚。XTAL2(18脚)和XTAL1(19脚)。利用内部时钟电路时,XTAL1与XTAL2之间接一晶体振荡器,XTAL1为内部放大电路输入端,XTAL2为输出端。采用外部时钟时,对于HMOS型单片机,XTAL1接地,XTAL2端接外部输入时钟脉冲。而对于CHMOS型单片机XTAL1为驱动端,XTAL2悬空。2.2存储器结构及
3、用途存储器分为程序存储器和数据存储器两大类;程序存储器(ROM):片内(EEPROM)片外数据存储器:随机存储器(RAM):片内、片外工作寄存器特殊功能寄存器(SFR)这两大类存储器在物理上是分开的,在逻辑地址空间上是重叠的。存储器地址空间示意图地址:0000H02存储单元0001H一个字节的0005H内容(八位)每个单片机包括:8位CPU。片内程序存储器ROM/EPROM(4KB/8KB)用以存放程序,原始数据和表格。(8031片内无ROM。)片内数据存储器RAM(128B/256B)用以存放可以读/写的数据,如中间结果以及欲显示的数据等。四个8位并行I/O接口P0P3每个口既可以用作输入,
4、也可以用作输出。两个定时器,既可以设置为计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时结果实现计算机控制。5个中断源。一个全双工UART(异步接收发送器)的串行I/O口用于实现单片机间或与微机的通信。片内时钟振荡器,具有最高时钟频率为12MHZ存储器结构及用途程序存储器用于存放程序及表格数据。在8051(AT89C51)片内有4KB的ROM(EPROM),且通过16位地址线可扩展64KB的EPROM。从前面所述,片内ROM和扩展ROM是统一编址的。当EA=1时。使用的是片内0000H0FFFH和片外1000HFFFFH的存储器地址,当EA=0,则所有取指令操作均在
5、外部程序存储器中进行。这时外部扩展的ROM可以从0000H开始编址。对8031单片机来说,由于片内无ROM。只能外部扩展程序存储器,并且从0000H开始编。P11地址空间、P12位地址、P14特殊寄存器作业1:1.P0、P1、P2、P3四个均是_位的_口(填“串行”还是“并行”)。2.片内RAM可进行位寻址的空间位地址范围是_。3.MCS51的存储器空间配置从功能上可分为四种类型:_、内部数据存储器、_、外部程序存储器。4MCS51内部的SFR共有_个。5.存储器的地址范围是0000H0FFFH,它的容量为()。(A)1KB(B)2KB(C)3KB(D)4KB68051单片机内有()个16位的
6、定时/计数器,每个定时/计数器都有()种工作方式。(A)4,5(B)2,4(C)5,2(D)2,37写出五个特殊寄存器的名称及其主要用途。单片机的程序计算机的程序分为:文本文件和非文本文件;文本文件编译非文本文件在计算机中可运行的非文本文件又称软件编程:程序员编写文本文件,也称源程序;源程序:由一行一行的语句(指令)组成;语句行必须严格按规定(语法)编写。指令:伪指令、可执行指令;单片机的语句行:标号:操作码助记符目的操作数,源操作数,源操作数第3章MCS-51单片机指令系统3.1指令格式和寻址方式3.2指令系统3.3思考题与习题P263.1.1指令格式8051汇编语言指令由操作码助记符字段和
7、操作数字段两部分组成。指令格式如下:标号:操作码助记符目的操作数,源操作数,源操作数例如:MOVA,#34H标号表示指令行所在位置,不能重复;操作码助记符是表示指令操作功能的英文缩写。每条指令均有操作码。例如,JBMOV、SETB等。操作数数据、数据所在地址、数据存放的寄存器。源操作数、目标操作数之分;指令中的操作数可以是1个2个或3个,有些指令可能没有操作数。操作数与操作数之间以“,”分隔。操作码与操作数之间以空格“”为分隔。操作码与操作数都有对应的二进制代码,指令代码由若干字节组成。对于不同的指令,指令的字节数不同。8051指令系统中,有单字节双字节或三字节指令。下面分别加以说明。单字节指
8、令单字节指令中的8位二进制代码既包含操作码的信息,也包含操作数的信息。这种指令有两种情况。指令码中隐含着对某一寄存器的操作。例.INCDPTR由于操作的内容和唯一的对象DPTR寄存器,只用8位二进制代码表示,其机器码为A3H。由指令码中的rrr三位的不同编码指定某一个寄存器。例如:INCROINCR7指令。INC的代码0001,最低三位rrr的不同组合编码用来表示R0R7。(共有49条单字节指令)双字节指令操作码立即数或地址用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。其指令格式为:(共有45条)操作码立即数或地址三字节指令操作码立即数或地址立即数或地址一个字节操作码,两个字节
9、操作数,其格式如下:(共有17条)操作码立即数或地址立即数或地址3.1.2寻址方式获得操作数地址的方式称为操作数地址的寻址方式,简称为寻址方式。8051有以下7种寻址方式:一.立即寻址指令的操作数为8位或16位数据称作立即数,这种寻址方式称立即寻址。例:MOVA,#4AH;4AH送入AMOVDPTR,#3A45H这两条指令表示由“#”后表示的立即数传到目的操作数中。P27七种寻址方式二.直接寻址直接寻址时,指令中直接给出操作数的地址。这种寻址方式提供了访问内部数据存储器3种地址空间的方法:1).特殊功能寄存器地址空间。这是唯一可寻址特殊功能寄存器的寻址方式;2).内部RAM的128个字节单元地
10、址空间;3).位置地址空间;例:MOVA,35H属于直接寻址,表示将内部RAM35H这个直接地址单元中内容传送到累加器中,即:表示为A(35H),这里用括号来表示35H内存单元的内容。MOVA,P1(P1口)A。把SFR中P1口内容送A.直接寻址的地址占一字节,所以,一条直接寻址方式的指令至少占内存两个单元。三.寄存器寻址寄存器寻址时,指令中指出某一寄存器,其内容用作操作数。以这种寻址方式对所选的当前工作寄存器R0R7进行数据操作。MOVR0,#30H;R030HMOVA,R0;A(R0)上述第一条指令执行的结果。将立即数30H送入R0。第二条指令执行的结果,将A中的内容变为30H。这条指令属
11、于寄存器寻址。四.寄存器间接寻址寄存器间接寻址是把指令中寄存器的内容作为操作数的地址,把该地址对应单元的内容作为操作数。这种寻址方式用于访问内部RAM和外部RAM。8051规定R0和R1为间接寄存器,它可寻址内部RAM的低位地址的128B单元内容。对于栈操作指令PUSH和POP,则用堆栈指针SP进行寄存器间接寻址。此外,还可采用数据指针(DPTR)作为间接寻址寄存器,寻址外部数据的64KB空间。例:MOVR0,#35HMOV35H,#74HMOVA,R0最后一条指令是寄存器间接寻址指令,上述指令的功能是将寄存器R0的内容35H作为地址,再将RAM中35H单元中的数据74H传送到A累加器中。五.
12、变址寻址8051单片机采用数据指针DPTR或PC为基地址寄存器,以累加器A作为变址寄存器,把二者的内容相加形成操作数的地址。例如(DPTR)=2000H,(A)=16H,(2016)=34H,执行MOVCA,A+DPTR后,就是将地址为2016中内容34H传送到A累加器中,这种寻址方式适用读取程序存储器中的常数表。六.相对寻址相对寻址用于相对转移的指令中,相对寻址是以程度计数器PC的当前值为基地址,与指令中给定的相对偏移量rel相加,把所得之和作为程序的转移地址。即目的地址,指令中相对偏移量是一个8位带符号数,用补码表示。相对转移指令一般是2字节指令,所以目的地址=源地址+2+偏移量=(PC+
13、2)+rel例如:指令在1000H地址中有一条指令1000H:JC78H;若CY=1,则:目的地址(PC)=1000+2+(78)补=107AH;若CY=0,顺序执行PC=1000+2=1002H由于相对偏移量rel是一个8位带符号数,用补码形式表示。例:1000H:JC82H(82H)=7EH目的地址=1000H+27EH=F84H从上述例子可见,程序转移范围在相对PC当前值的+127128个字节单元之间。在实际应用中经常需要根据已知的源地址和目的地址计算偏移量rel。rel=目的地址(源地址+2)补执行指令例如:1000H:JCrel转移到F84H处问:rel=?rel=F84H(1000
14、H+2)补=(7E)补=82H此外也有一些是三字节的相对转移指令(如:CJNE,Adirect,rel),即10执行完这条指令后,当前的PC值应该为本指令首字节所在单元的地址值加3,所以偏移量为rel=目的地址(源地址+3)七位寻址P298051单片机中可以作为位寻址的区域有二个:一个是在内部RAM的20H2FH的16个单元。每单元8位共计128位。另一个是字节地址能被8整除的特殊功能寄存器。所谓位寻址就是对位地址空间的每个位进行位传送、位状态控制。位逻辑运算等。例如:MOVC,08H;C(08H)其功能是:把内部RAM的21H中的D0位(位地址为08H)的内容传送到CY中。3.2指令系统P2
15、9指令系统指一台计算机所能执行的全部指令的集合。MCS-51单片机单片机的指令系统功能较强。其汇编语言指令有42种操作码助记符,各种操作码助记符与各种寻址方式组合得到111种指令,其中单字节49条,双字节指令45条和17条3字节指令。若按指令执行时间分类,有64条单周期指令,45条双周期指令和2条4周期指令。MCS-51指令系统可分为五大类:数据传送指令(28条)算术运算指令(24条)逻辑运算指令(25条)控制转移指令(22条)位操作指令(12条)共111条寻址空间及符号注释表3-2-1寻址空间寻址方式寻址空间立即数寻址程序存储器ROM直接寻址片内RAM低128B,特殊功能寄存器寄存器寻址工作
16、寄存器R0R7,A、B、C DPTR寄存器间接寻址片内RAM低128BR0,R1,SP(Push,POP)片内RAM(R0,R1,DPTR)变址寻址程序存储器(A+PC,A+DPTR)相对寻址程序存储器256B范围(PC+偏移量)位寻址片内RAM的20H2FH字节地址,部分特殊功能寄存器符号注释Rn(n=07):指当前工作寄存器组的工作寄存器R0R7。Ri(i=0,1):“”为寄存器间址符,以寄存器R0或R1作间接寻址。DPTR:以数据指针DPTR的内容(16位)为地址的间接寻址,用于对外部RAM64K地址空间寻址。#data:8位立即数,“#”后表示的是立即数,而不是地址。#data16:1
17、6位立即数。direct:8位片内RAM单元(包括SFR)的直接地址。addr11:11位目的地址,用于ACALL和AJMP指令中,目的地址必须在与下条指令地址位于同2KB区的程序存储器地址空间。addr16:16位目的地址,用于LCALL和LJMP指令中,可使程序在64KB程序存储器地址空间的任何单元。rel:补码形式的8位地址偏移量,以下条指令第一字节地址为基值,地址偏移量在-128+127范围内。/bit:位操作,表示光对该位中的内容取反然后再参与运算,但不改变该位中的内容。“/”为取反符。“bit”是位地址。作业21.任何程序总是由三种基本结构组成:顺序、分支和_。2.MCS-51指令
18、系统主要有哪几种寻址方 式?试举例说明。3.请说明下面符号地址代表的意义:Rel;addr11;addr16;direct;#data3.2.2数据传送指令8051为用户提供了极其丰富的数据传送指令,功能很强这类指令是把源操作数中的数据传送到目的操作数中去,而源操作数中的内容不改变,在应用程序中,传送指令占据很大的比例。1.对内部RAM和SFR的一般数据传送指令P302.堆栈操作指令P333.字节交换指令P344.累加器与外部传送指令P355.累加器A与程序存储器的传送指令(查表指令)P36表3-3-2内部RAM和SFR的数据传送指令指令名称汇编格式机 器 码操 作机器周期以累加器A为目的操作
19、数MOV A,Rn11101rrrARn1MOV A,direct11100101directA(direct)1MOV A,Ri1110011iA(Ri)1MOV A,#data01110100dataAdata1以寄存器Rn为目的操作数MOV Rn,A11111rrrRnA1MOV Rn,direct10101rrrdirectRn(direct)2MOV Rn,#data01111rrrRndata1以直接地址为目的操作数MOV direct,A11110101(direct)A2MOV direct,Rn10001rrrdirect(direct)Rn2MOV direct2,dire
20、ct110000101Direct1,2(direct2)(direct1)2MOV direct,Ri1000011idirect(direct)(Ri)2MOV direct,#data01110101Direct,data(direct)data2以寄存器间接地址为目的操作数MOV Ri,A1111011i(Ri)A2MOV Ri,direct1010011idirect(Ri)(direct)2MOV Ri,#data0111011i(Ri)data116位数据传送MOV DPTR,#data1610010000data158、70DPHdata158DPLdata702字节交换XCH
21、A,Rn11001rrrARn1XCHA,direct11000101directA(direct)1XCHA,Ri11000111A(Ri)1低半字节交换 XCHDA,Ri11010111A03(Ri)031指令名称汇编格式机器码操作机器周期进栈PUSHdirect11000000directSPSP+1(SP)(direct)2出栈POPdirect11010000direct(direct)(SP)SPSP-12累加器A与外部RAM的数据传送MOVXA,DPTR11100000A(DPTR)2MOVXDPTR,A11110000(DPTR)A2MOVXA,Ri11100011A(Ri)2
22、MOVXRi,A11110011(Ri)A2查表MOVCA,A+PC10000011PCPC+1APC+A2MOVCA,A+DPTR10010011A(A+DPTR)23.2.3算术运算指令P37所谓算术运算指令包括加减乘除,基本四则运算,一般在双操作数加、带进位加和带借位减的操作里,累加器A的内容为第一操作数,并将操作后的中间结果存放在A中,第二操作数,可以是立即数,工作寄存器内容,寄存器Ri间接寻址字节或直接寻址字节。指令的执行结果将使程序状态字PSW中的进位CY、半进位AC和溢出位OV置位或恢复,只有加1和减1指令不影响这些标志,乘除指令不影响AC标志位,PSW中的奇偶性标志P总是表示累
23、加器A的奇偶性。1.加法指令P38指令名称汇编格式机器码操作机器周期不带进位加法ADD A,Rn00101rrrAA+Rn1ADD A,direct00100101 directAA+(direct)1ADD A,Ri00100111AA+(Ri)1ADD A,#data00100100 dataAA+data1带进位加法ADDC A,Rn00111rrrAA+Rn+CY1ADDC A,direct00110101 directAA+(direct)+CY1ADDC A,Ri00110111AA+(Ri)+CY1ADDC A,#data00110100 dataAA+data+CY12.带借位
24、减法指令P39指令名称汇编格式机器码操作机器周期带借位减法SUBBA,Rn10011rrrAA-Rn-CY1SUBBA,direct10010101direct AA-(direct)-CY1SUBBA,Ri10010111AA-(Ri)-CY1SUBBA,#data10010100dataAA-data-CY13.乘法指令P40指令名称汇编格式机器码操作机器周期乘法MULAB10100100BAA*B44.除法指令P40指令名称汇编格式机器码操作机器周期除法DIVAB10000100A(商)AB(余数)B45.加1指令P40指令名称汇编格式机器码操作机器周期加1INCA00000100AA+
25、11INCRn00001rrrRnRn+11INCdirect00000101direct(direct)(direct)+11INCRi00000111(Ri)(Ri)+11INCDPTR10100011DPTRDPTR+126.减1指令P41指令名称汇编格式机器码操作机器周期减1DECA00010100AA-11DECRn00011rrrRnRn-11DECdirect00010101direct(direct)(direct)-11DECRi00010111(Ri)(Ri)-117.十进制调整指令P41指令名称汇编格式机器码操作机器周期十进制调整指令DAA11010100将A的内容转换为
26、BCD码1十进制调整指令举例P42例:如果(A)=65H;表示十进制数65的压缩BCD码(R2)=78H;表示十进制数78的压缩BCD码ADDA,R2DAA指令执行情况如下:A=01100101+)R2=01111000-11011101+)01100110;加6调整,自动完成101000011结果:(A)=43H,CY=1相当于十进制143。此类指令影响标志位!。1.加法指令P382.带借位减法指令P393.乘法指令P404.除法指令P405.加1指令P406.减1指令P417.十进制调整指令P41作业31.MOV DPTR,#data16的作用是用来设定_。2.MCS-51的指令按其功能可
27、分为五大类:_、_、逻辑运算类指令、位操作指令、控制转移指令。3.MOVXA,R0指令中,源操作数采用()寻址方式。4A7H和5BH两个立即数相加后,和为(),(CY)是()。(A)1CH,0(B)C1H,0(C)02H,1(D)C1H,15.8031单片机中,将累加器A中的数送入外RAM的40H单元,可执行的指令()。(A)MOVR1,40H(B)MOVR1,#40HMOVXR1,AMOVXR1,A(C)MOVX40H,A(D)MOVR1,#40HMOVXR1,A6.已知累加器A的数值为98H,它与0FAH相加,相加后会影响标志位CY、AC和OV位。各个位的值是()。(A)0、0、0(B)1
28、、0、1(C)1、1、1(D)1、1、07.已知(R0)=20H,(20H)=10H,(P0)=30H,(R2)=20H,执行如下程序段后(40H)=MOVR0,#11HMOVA,R2ADDA,20HMOVPSW,#80HSUBBA,P0MOV40H,A3.2.4逻辑运算指令逻辑运算指令包括逻辑与、或、异或、清除、求反、移位等操作,这类指令的操作数都是8位,共25条逻辑操作指令。1.累加器清0,取反,移位和半字交换指令P422.逻辑与指令P43(按位,有0即为0)3.逻辑或指令P44(按位,有1即为1)4.逻辑“异或”指令P45(按位,相同为0)读修改写指令1.累加器清0,取反,移位和半字交换
29、指令A7A0A7A0CYA7A0A7A0CY高4位低4位指令名称汇编格式机器码操作机器周期简单逻辑操作清零CLRA11100100A01取反CPLA11110100AA1循环移位左移左环移RLA001000111带进位左环移RLCA001100111右移右环移RRA000000111带进位右环移RRCA000100111累加器A半字节交换SWAPA1100010012.逻辑与指令指令名称汇编格式机器码操作机器周期逻辑与ANLA,Rn01011rrrAA(Rn)1ANLA,direct01010101directAA(direct)1ANLA,Ri01010111AA(Ri)1ANLA,#dat
30、a01010100dataAAdata1ANLdirect,A01010010directdirect(direct)A1ANLdirect,#data01010011directdatadirect(direct)data23.逻辑或指令指令名称汇编格式机器码操作机器周期逻辑或ORLA,Rn01001rrrAARn1ORLA,direct01000101directAA(direct)1ORLA,Ri01000111AA(Ri)1ORLA,#data01000100dataAAdata1ORLdirect,A01000010directdirect(direct)A1ORLdirect,#d
31、ata01000011directdatadirect(direct)data24.逻辑“异或”指令指令名称汇编格式机器码操作机器周期逻辑异或XRLA,Rn01101rrrAARn1XRLA,direct01100101directAA(direct)1XRLA,Ri01100111AA(Ri)1XRLA,#data01100100dataAAdata1XRLdirect,A01100010directdirect(direct)A1XRLdirect,#data01100011direatdatadirect(direct)data23.2.6位操作指令P55MSC-51单片机具有丰富的位操
32、作指令。可以完成以位变量为对象的传递、运算、控制、转移等操作。在位操作中以位累加器(借用进位标志CY)为中心展开,位操作指令的操作对象是内部RAM的位寻址区,即字节地址为20H2FH单元中连续的128位(位地址为00H7FH),以及SFR中可以进行位寻址的各位。见表2.4,表2.5。位操作指令见表3.26。表3-2-26位操作指令指令名称汇编格式机器码操作机器周期位变量传送MOVC,bit10100010bitC(bit)1MOVbit,C10010010bit(bit)C2位变量修改位清零CLRC11000011C01CLRbit11000010bit(bit)01位求反CPLC101100
33、11CC1CPLbit10110010bit(bit)(bit)1位置1SETBC11010011C11SETBbit11010010bit(bit)11位逻辑运算逻辑与ANLC,bit10000010bitCC(bit)2ANLC,/bit10110000bitCC(bit)2逻辑或ORLC,bit01110010bitCC(bit)2ORLC,/bit10100000bitCC(bit)2作业41.CJNE,rel属于五大类指令中的_类指令,其操作码助记符含义是_。2若(A)=86H,(PSW)=80H,则执行RRCA指令后(A)=()(A)C3H(B)B3H(C)0DH(D)56H3.已
34、知(R0)=20H,(20H)=36H,(21H)=17H,(36H)=34H,执行过程如下:MOVA,R0MOVR0,AMOVA,R0ADDA,21HORLA,#21HRLAMOVR2,A则执行结束(R0)=(R2)=4.执行下面一段程序;MOVSP,#60HPUSHAMOVA,#10HPUSHBMOVB,#01HPOPAPOPBA,B的内容是:(A)=(B)=3.2.5控制转移指令单片机在执行指令的过程中,有时因为操作的需要,程序不能按顺序逐条执行指令,而是根据条件(标志),需要改变程序运行方向,即将程序跳转到某个指定的地址再顺序执行下去,某些指令具有修改程序计数器PC的功能,因此PC的内
35、容是将执行的下一条指令的地址。8051单片机有丰富的转移类指令(17条),包括无条件转移指令,条件转移指令,调用指令及返回指令条。1.无条件转移指令无条件转移指令,当程序执行到无条件转移指令时,移到指令所提供的地址处执行,这类指令回有以下4条:P46指令名称汇编格式机器码操作机器周期绝对无条件转移AJMPaddr11A10A9A800001A7A0PCPC+2PC100addr100PC1511不变2长转移LJMPaddr1600000010A15A8A7A0PCaddr1503短转移SJMPrel10000000relPCPC+2PCPC+rel2间接转移JMPA+DPTR01110011P
36、CA+DPTR2例3-24:根据累加器A中命令键键值,设计命令键操作程序入口跳转表。CLRCRLCAMOVDPTR,#JPTABJMPA+DPTRJPTAB:AJMPCCS0AJMPCCS1AJMPCCS2CCS0:CCS1:CCS2:当(A)=00H,转移到CCS0,当(A)=01H时散转到CCS1,(A)=02H时散转到CCS2,由于AJMP是双字节指令,散转前A中键值应先乘2。2。条件转移指令P49指令名称指令名称汇编汇编格式格式机器机器码码操作操作机器周机器周期期判断判断A=0?转转移移零零转转移移JZ rel01100000relPC PC+2若若A=0,则则PC PC+rel若若A
37、0,顺顺序序执执行行2非零非零转转移移JNZ rel01110000relPC PC+2若若A0,则则PC PC+rel若若A=0,顺顺序序执执行行2位位条条件件转转移移Cy=1转转移移JC rel01000000relPC PC+2若若Cy=1,则则PC PC+rel若若Cy=0,顺顺序序执执行行2Cy=0转转移移JNC rel01010000relPC PC+2若若Cy=0,则则PC PC+rel若若Cy=1,顺顺序序执执行行2(bit)=1转转移移JB bit,rel00100000bitrelPC PC+3若若(bit)=1,则则PC PC+rel若若(bit)=0,顺顺序序执执行行2
38、(bit)=0转转移移JNB bit,rel00110000bitrelPC PC+3若若(bit)=0,则则PC PC+rel若若(bit)=1,顺顺序序执执行行2(bit)=1,位清位清0转转移移JBC bit,rel00010000bitrelPC PC+3若若(bit)=1,则则(bit)0PC PC+rel若若(bit)=0,顺顺序序执执行行23比较转移指令P51指令名指令名称称汇编汇编格式格式机器机器码码操操 作作机器机器周期周期 比比 较较 转转 移移CJNE A,direct,rel10110101directrelPC PC+3若若(direct)A,则则PC PC+rel
39、且且CY 1若若(direct)=A,则顺则顺序序执执行行 且且CY 02CJNE A,#data,rel10110100datarelPC PC+3若若(data)A,则则PC PC+rel 且且CY 1若若(data)=A,则顺则顺序序执执行行 且且CY 02CJNE Rn,#data,rel10111rrrdatarelPC PC+3若若(data)Rn,则则PC PC+rel 且且CY 1若若(data)=Rn,则顺则顺序序执执行行 且且CY 02CJNE Ri,#data,rel1011011idatarelPC PC+3若若(data)(Ri),则则PC PC+rel 且且CY 1
40、若若(data)=(Ri),则顺则顺序序执执行行 且且CY 024.循环转移P52指令名称汇编格式机器码操作机器周期减1不为0、循环转移DJNZRn,rel11011rrrrelPCPC+2,RnRn-1当Rn0,则PCPC+rel当Rn=0,则结束循环程序往下执行2DJNZdiret,rel11010101directrelPCPC+3,(direct)(direct)-1当(direct)0,则PCPC+rel当(direct)=0,则结束循环程序往下执行25.调用子程序指令P52-53指令名称汇编格式机器码操作机器周期绝对调用ACALLaddrlla10a9a810001addr70PC
41、PC+2,SPSP+1(SP)PC70,SPSP+1(SP)PC158PC100addr100PC1511不变2长调用LCALLaddr1600010010addr158addr70PCPC+3,SPSP+1(SP)PC70,SPSP+1(SP)PC158PCaddr15026.子程序返回指令P54指令名称汇编格式机器码操作机器周期子程序返回RET00100010PC168(SP),SPSP-1PC70(SP),SPSP-12中断返回RET10010010PC158(SP)SPSP-1PC70(SP)SPSP-12空操作NOP000000001指令作业51判断下列各题,正确的打“”,错误的打“
42、”(1).MOV20H,R1()(2).ADDCA,2030H()(3).CLRA()(4).MOVX40H,#30H()(5).ORG3000H()(6).MOVCA+PC,A()(7).MOVXA,2000H()(8).DJNZ#data,rel()(9).INCR5()(10).DECDPTR()(11).MOVR1,R2()(12).SWAPR1()(13).SETB2000H()(14).JZA,LOOP()(15)DAR2()例3-25:二数相加若和不等于零则和取反,若和为零则将20单元清零。ADDA,R0JNZNEQMOV20H,ANEQ:CPLA例3-27:判(00H)位,若(
43、00H)1,则(A)+1A,若(00H)=1,则(A)A,编制一个程序。sEX:JNB00H,NEQCPLASJMPsENDNEQ:INCAsEND:RET例例3-283-28:编写一程序完成计算:编写一程序完成计算I I 并将结果送入并将结果送入(2020H H)中中.DEL1:DEL1:MOV R2 MOV R2,#09H#09H ;置循环次数置循环次数 MOV A MOV A,#00H#00H ;置初值置初值 MOV R1 MOV R1,#00H#00HLOOPLOOP:INC R1 INC R1 ADD A ADD A,R1 R1 ;两数相加两数相加 DJNZ R2DJNZ R2,LOOP LOOP ;次数没完成转移次数没完成转移 RETRET