版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汽车单片机与车载网络汽车单片机与车载网络学习情境学习情境2汽车转向灯的单片机控制汽车转向灯的单片机控制2.1指令简介指令简介、指令概述、指令概述指令是规定单片机进行某种操作的命令。一条指令只能完成指令是规定单片机进行某种操作的命令。一条指令只能完成有限的功能,为使单片机完成一定的或复杂的功能就需要一系列有限的功能,为使单片机完成一定的或复杂的功能就需要一系列指令。单片机能够执行的各种指令的集合就称为指令系统。指令。单片机能够执行的各种指令的集合就称为指令系统。单片机能执行什么样的操作,是在单片机设计时确定的。一单片机能执行什么样的操作,是在单片机设计时确定的。一条指令对应着一种基本操作。由于单
2、片机只能识别二进制数,所条指令对应着一种基本操作。由于单片机只能识别二进制数,所以必须用二进制形式来表示,称为指令的机器码或机器指令。以必须用二进制形式来表示,称为指令的机器码或机器指令。-51单片机指令系统共有单片机指令系统共有33种功能,种功能,42种助记符,种助记符,111条指令。条指令。、指令格式、指令格式不同指令翻译成机器码后字节数也不一定相同。按照机器码不同指令翻译成机器码后字节数也不一定相同。按照机器码个数,指令可以分为以下三种:个数,指令可以分为以下三种:单字节指令:操作码单字节指令:操作码双字节指令:操作码数据或寻址方式双字节指令:操作码数据或寻址方式三字节指令:操作码数据或
3、寻址方式数据或寻址方式三字节指令:操作码数据或寻址方式数据或寻址方式-51单片机指令系统包括单片机指令系统包括49条单字节指令、条单字节指令、45条双条双字节指令、字节指令、17条三字节指令。条三字节指令。采用助记符表示的汇编语言指令格式如下:采用助记符表示的汇编语言指令格式如下:标号:标号:操作码操作码目的操作数目的操作数,源操作数,源操作数;注释;注释标号是加在指令的前面表示该指令位置的符号地址,可标号是加在指令的前面表示该指令位置的符号地址,可有可无;标号由有可无;标号由18个字符组成,第一个字符必须是英文字母,个字符组成,第一个字符必须是英文字母,不能是数字或其他符号;标号后必须用不能
4、是数字或其他符号;标号后必须用“:”。操作码是由助记符表示的字符串,表示指令所实现的操操作码是由助记符表示的字符串,表示指令所实现的操作功能,如表示数据传送操作、表示加法操作作功能,如表示数据传送操作、表示加法操作等。等。操作数指出了参加运算的数据或数据存放的位置。操作数操作数指出了参加运算的数据或数据存放的位置。操作数一般有以下几种形式:没有操作数项,操作数隐含在操作码中,一般有以下几种形式:没有操作数项,操作数隐含在操作码中,如指令;只有一个操作数,如如指令;只有一个操作数,如1.01.0指令;有两指令;有两个操作数,如个操作数,如,#0,#0指令,操作数之间以逗号相指令,操作数之间以逗号
5、相隔;有三个操作数,如隔;有三个操作数,如,#08,#08, ,指令,指令,操作数之间以逗号相隔。操作数之间以逗号相隔。注释是对语句的解释说明,用以提高程序的可读性,注释注释是对语句的解释说明,用以提高程序的可读性,注释前必须加前必须加“;”。计算机对它不作处理,注释部分不影响指令。计算机对它不作处理,注释部分不影响指令的执行。的执行。2.22.2寻址方式寻址方式从指令格式知道,指令的重要组成部分是操作数,指出了从指令格式知道,指令的重要组成部分是操作数,指出了参与操作的数据或数据的地址。寻找操作操作数地址的方式称参与操作的数据或数据的地址。寻找操作操作数地址的方式称为寻址方式,是由指令的功能
6、决定的,寻址方式越多,指令功为寻址方式,是由指令的功能决定的,寻址方式越多,指令功能就越强。能就越强。-51-51指令系统共使用了指令系统共使用了7 7种寻址方式,包括寄存器寻种寻址方式,包括寄存器寻址、直接寻址、立即寻址、寄存器间接寻址、变址寻址、相对址、直接寻址、立即寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。寻址和位寻址。、立即数寻址、立即数寻址在这种寻址方式中,指令多是双字节的。立即数寻址是指在这种寻址方式中,指令多是双字节的。立即数寻址是指操作数直接写在指令中。例如:指令操作数直接写在指令中。例如:指令,#3,#3执行执行的操作是将立即数的操作是将立即数3 3送到累加器中,该指
7、令就是立即数送到累加器中,该指令就是立即数寻址。注意:立即数前必须加寻址。注意:立即数前必须加“#”#”号。号。、直接寻址、直接寻址在这种寻址方式中,把存放操作数的内存单元的地址直接在这种寻址方式中,把存放操作数的内存单元的地址直接写在指令中。在写在指令中。在-51-51单片机中,可以直接寻址的存储器主单片机中,可以直接寻址的存储器主要有内部区和特殊功能寄存器区区。例如:指令要有内部区和特殊功能寄存器区区。例如:指令,3,3执行的操作是将内部中地址为执行的操作是将内部中地址为3 3的的单元内容传送到累加器中,其操作数单元内容传送到累加器中,其操作数3 3就是存放数据的单就是存放数据的单元地址,
8、因此指令是直接寻址。设内部元地址,因此指令是直接寻址。设内部3 3单元的内单元的内容是容是8888,那指令,那指令,3,3的执行过程如图所示。的执行过程如图所示。、寄存器寻址、寄存器寻址寄存器寻址是指将操作数存放于寄存器中,寄存器包括工寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器作寄存器0-0-7 7、累加器、通用寄存器、地址寄存器、累加器、通用寄存器、地址寄存器等。例如:指令等。例如:指令1,1,的操作是把累加器中的的操作是把累加器中的数据传送到寄存器数据传送到寄存器1 1中,其操作数存放在累加器中,所以中,其操作数存放在累加器中,所以3AH3AHA内部RAM40H图2-2 直
9、接寻址示意图58H58HA内部RAM20H20HR0图2-3 寄存器寻址示意图寻址方式为寄存器寻址。寻址方式为寄存器寻址。如果程序状态寄存器的如果程序状态寄存器的1 1、0=01(0=01(选中第二选中第二组工作寄存器,对应地址为组工作寄存器,对应地址为0808-0-0),),设累加器的内容为设累加器的内容为2020,则执行,则执行1,1,指令后,内部指令后,内部0909单元单元的值就变为的值就变为2020。、寄存器间接寻址、寄存器间接寻址在这种寻址方式中,操作数所指定的寄存器中存放的不是在这种寻址方式中,操作数所指定的寄存器中存放的不是操作数,而是操作数地址,这种寻址方式是用于访问片内数据操
10、作数,而是操作数地址,这种寻址方式是用于访问片内数据存储器或片外数据存储器。存储器或片外数据存储器。-51-51指令系统中,用于寄存器间接寻址的寄存器有指令系统中,用于寄存器间接寻址的寄存器有0 0、1 1和,称为寄存器间接寻址寄存器。注意:间和,称为寄存器间接寻址寄存器。注意:间接寻址寄存器前面必须加符号接寻址寄存器前面必须加符号“”。例如:指令例如:指令,0 0执行的操作是将执行的操作是将0 0的内容作的内容作为内部的地址,再将该地址单元中的内容取出来送到累为内部的地址,再将该地址单元中的内容取出来送到累加器中。加器中。、变址寻址、变址寻址在这种寻址方式中,是将基址寄存器与变址寄存器的内容
11、在这种寻址方式中,是将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。或是基址寄存器,相加,结果作为操作数的地址。或是基址寄存器,累加器是变址寄存器。该类寻址方式主要用于查表操作。例累加器是变址寄存器。该类寻址方式主要用于查表操作。例如:指令如:指令,+ +执行的操作是将累加器执行的操作是将累加器和基址寄存器的内容相加,相加结果作为操作数存放和基址寄存器的内容相加,相加结果作为操作数存放的地址,再将操作数取出来送到累加器中。的地址,再将操作数取出来送到累加器中。设累加器设累加器0202,03000300,外部,外部(0302(0302) )5555,则指令,则指令,+ +的执行结果是的
12、执行结果是累加器的内容为累加器的内容为5555。2000H20HADPTR指令执行前2020H47H47HAROM指令执行后图2-5 变址寻址示意图、相对寻址、相对寻址相对寻址是指程序计数器的当前内容与指令第二字节相对寻址是指程序计数器的当前内容与指令第二字节所给出的数相加,其结果作为跳转指令的转移地址(也称目所给出的数相加,其结果作为跳转指令的转移地址(也称目的)。该类寻址方式主要用于跳转指令。的)。该类寻址方式主要用于跳转指令。例如:例如:rere这条指令表示若进位这条指令表示若进位0 0,则不跳转,程序继续向下执行;,则不跳转,程序继续向下执行;若进位若进位1 1,则以中的当前值为基地址
13、,加上偏移量,则以中的当前值为基地址,加上偏移量后所得到的结果为该转移指令的目的地址。后所得到的结果为该转移指令的目的地址。、位寻址、位寻址位寻址是指按位进行的操作,位寻址是指按位进行的操作,-51-51单片机中,操作数单片机中,操作数不仅可以按字节为单位进行操作,也可以进行操作。当我们把不仅可以按字节为单位进行操作,也可以进行操作。当我们把一位作为操作数时,这个操作数的地址称为位地址。一位作为操作数时,这个操作数的地址称为位地址。位寻址区包括专门安排在内部中两个区域:一是内位寻址区包括专门安排在内部中两个区域:一是内部的位寻址区,地址范围是部的位寻址区,地址范围是2020-2-2,共,共16
14、16个个单元,位地址为单元,位地址为0000-7-7;二是特殊功能寄存器中有;二是特殊功能寄存器中有1111个寄存器可以位寻址。个寄存器可以位寻址。例如:指令例如:指令3 3执行的操作是将内部位执行的操作是将内部位寻址区中的寻址区中的3 3位置位置1.1.设内部设内部2727单元原来的内容是单元原来的内容是0000,执行,执行3后,由于后,由于3对应着内部对应着内部27的第的第5位,因位,因此该位变为此该位变为1,也就是,也就是27单元的内容为单元的内容为20。2.32.3指令系统指令系统-51-51单片机指令系统包括单片机指令系统包括111111条指令,按功能可以划条指令,按功能可以划分为五
15、类:分为五类:数据传送指令(数据传送指令(2929条)、算术运算指令(条)、算术运算指令(2424条)、逻辑运条)、逻辑运算指令(算指令(2424条)、控制转移指令(条)、控制转移指令(1717条)、位操作指令(条)、位操作指令(1717条)条)2.3.12.3.1指令系统中的符号说明指令系统中的符号说明2.3.22.3.2数据传送类指令数据传送类指令数据传送类指令是最常用、最基本的一类指令,包括内部数据传送类指令是最常用、最基本的一类指令,包括内部、寄存器、外部以及程序存储器之间的数据传送。、寄存器、外部以及程序存储器之间的数据传送。数据传送操作是指把数据从源地址传送到目的地址,源地数据传送
16、操作是指把数据从源地址传送到目的地址,源地址内容不变。址内容不变。 1 1、内部、内部8 8位数据传送指令位数据传送指令内部内部8 8位数据传送指令共位数据传送指令共1515条,主要用于条,主要用于-51-51单片机内单片机内部与寄存器之间的数据传送。指令基本格式:部与寄存器之间的数据传送。指令基本格式: ,源操作数源操作数()以累加器为目的地址的传送指令(条)()以累加器为目的地址的传送指令(条)说明:以上传送指令的结果影响程序状态字寄存器的说明:以上传送指令的结果影响程序状态字寄存器的标志。标志。例例2.1已知相应单元的内容,请指出每条指令执行后相应已知相应单元的内容,请指出每条指令执行后
17、相应单元内容的变化。单元内容的变化。累加器累加器4040寄存器寄存器0 0 5050内部内部:40:40 6060内部内部:50:50 2020,#30,#30,40,40, ,0 0,0 0解:解:,#30执行后()执行后()30; ,40执行后()执行后()60; ,0执行后()执行后()50;,0执行后()执行后()20。()以为目的地址的传送指令(条)()以为目的地址的传送指令(条)说明:以上传送指令的结果不影响程序状态寄存器说明:以上传送指令的结果不影响程序状态寄存器标志。标志。()以直接地址为目的的传送指令(条)()以直接地址为目的的传送指令(条)说明:以上传送指令的结果不影响程序
18、状态字寄存器说明:以上传送指令的结果不影响程序状态字寄存器标志。标志。()以寄存器间接地址为目的地址的传送指令(条)()以寄存器间接地址为目的地址的传送指令(条)说明:以上传送指令的结果不影响程序状态寄存器说明:以上传送指令的结果不影响程序状态寄存器标志。标志。例例2.1已知相应单元的内容,请指出每条指令执行后相应已知相应单元的内容,请指出每条指令执行后相应单元内容的变化。单元内容的变化。寄存器寄存器0 05050内部内部:50:506060寄存器寄存器1 16666内部内部:66:664545寄存器寄存器6 62020内部内部:70:703030, ,6 67,707,707070,50,5
19、04040,0 0 1,#881,#88解:解: ,6执行后()执行后()207,70执行后(执行后(7)3070,50执行后(执行后(70)6040,0执行后(执行后(40)601,#88执行后(执行后(66)882 2、1616位数据传送指令(条)位数据传送指令(条)说明:以上指令结果不影响程序状态字寄存器标志。说明:以上指令结果不影响程序状态字寄存器标志。3 3、外部数据传送指令(条)、外部数据传送指令(条)说明:)外部只能通过累加器进行数据传送。说明:)外部只能通过累加器进行数据传送。)累加器与外部之间传送数据时只能间间接寻址方式,间接寻址)累加器与外部之间传送数据时只能间间接寻址方式
20、,间接寻址寄存器为寄存器为, ,0,0,1 1)以上传送指令结果通常影响的标志。)以上传送指令结果通常影响的标志。例例2.32.3把外部数据存储器把外部数据存储器20402040单元中的数据传送到外部单元中的数据传送到外部数据存储器数据存储器25702570单元中去。单元中去。解:解:,#2040,#2040,#2570,#2570 , ,、交换和查表类指令、交换和查表类指令()字节交换指令(条)()字节交换指令(条)说明:以上指令结果影响程序状态字寄存器的标志说明:以上指令结果影响程序状态字寄存器的标志()半字节交换指令(条)()半字节交换指令(条)说明:以上指令结果影响程序状态字寄存器的标
21、志说明:以上指令结果影响程序状态字寄存器的标志()累加器中高位和低位交换(条)()累加器中高位和低位交换(条)说明:以上指令结果影响程序状态字寄存器的标志说明:以上指令结果影响程序状态字寄存器的标志例例2.42.4设内部数据存储区设内部数据存储区2 2、2 2单元中连续存放有单元中连续存放有4 4个个码,试编写一程序把码,试编写一程序把4 4个码倒序排序,即:个码倒序排序,即:3 3 2 2 1 1 0 0 0 1 2 3 2BH 2CH 2BH 2CH解:解:MOV R0,#2BH MOV A, R0 SWAP A MOV R0, A MOV R1, #2CH MOV A, R1 SWAP
22、A XCH A, R0 MOV R1, A()查表指令(条)()查表指令(条) 说明:说明:以上指令结果影响程序状态寄存器的标志。以上指令结果影响程序状态寄存器的标志。查表指令用于查找存放在程序存储器中的表格。查表指令用于查找存放在程序存储器中的表格。()堆栈操作指令(条)()堆栈操作指令(条)说明:说明:堆栈是用户自己设定的内部中的一块专用存储区,堆栈是用户自己设定的内部中的一块专用存储区,使用时一定先设堆栈指针;堆栈指针缺省为使用时一定先设堆栈指针;堆栈指针缺省为0707堆栈遵循后进先出的原则安排数据堆栈遵循后进先出的原则安排数据堆栈操作必须是字节操作,而且只能直接寻址。将累加器堆栈操作必
23、须是字节操作,而且只能直接寻址。将累加器入栈、出栈指令可以写成:入栈、出栈指令可以写成:PUSH/POP ACCPUSH/POP ACC或或PUSH/POP 0E0HPUSH/POP 0E0H,而不能写成:而不能写成:PUSH/POP APUSH/POP A。堆栈通常用于临时保护数据及子程序调用时保护现场堆栈通常用于临时保护数据及子程序调用时保护现场/ /恢恢复现场。复现场。上类指令结果不影响程序状态字寄存器标志。上类指令结果不影响程序状态字寄存器标志。例例2.52.5设(设(3030)0101,(,(4040)1 1。将内部。将内部的的3030与与4040两单元的内容交换。两单元的内容交换。
24、解:解:PUSH 30HPUSH 30H PUSH 40H PUSH 40H POP 30H POP 30H POP 40H POP 40H执行结果执行结果(3030)1 1,(,(4040)0101。2.3.32.3.3算术运算类指令算术运算类指令、加、减法指令、加、减法指令()加法指令(条)()加法指令(条)说明:说明:与的区别为是否加进位位。与的区别为是否加进位位。指令执行结果均在累加器中。指令执行结果均在累加器中。以上指令结果均影响程序状态字寄存器的、以上指令结果均影响程序状态字寄存器的、和标志。和标志。如果如果7 7位有进位,则进位位为:否则,为位有进位,则进位位为:否则,为. .如
25、如果果3 3位有进位,则辅助进位为;否则,为位有进位,则辅助进位为;否则,为. .如果如果6 6位有进位而位有进位而7 7位无进位,或位无进位,或6 6位无进位而位无进位而7 7位有进位,位有进位,则溢出标志为,否则,为。标志可由计算公则溢出标志为,否则,为。标志可由计算公式式7+7+66来确定,其中来确定,其中7、6分别为分别为6位、位、7位向高位的进位。位向高位的进位。例例2.62.6()()0 03 3,(,(0 0)0 0,执行指令,执行指令ADD A, R0ADD A, R0,操作如下:,操作如下:1100001111000011+ 10101010+ 10101010 101101
26、101101101101运算后,运算后,1 1,1 1,1 1,1 1,(),()6 6。上例中若上例中若3 3和看作无符号数相加,则不考虑溢出,和看作无符号数相加,则不考虑溢出,结果为结果为1616;若把;若把3 3和看作有符号数,则得到个和看作有符号数,则得到个负数相加得正数的错误结论,此时负数相加得正数的错误结论,此时1 1,表示出错。,表示出错。=1=1表示两正数相加,和变成负数,或两负数相加,和变成正数的表示两正数相加,和变成负数,或两负数相加,和变成正数的错误结果。溢出标志在内部是靠硬件异或门获得。错误结果。溢出标志在内部是靠硬件异或门获得。()减法指令(条)()减法指令(条)说明
27、:说明:减法指令中没有不带借位的减法指令,所以在需要减法指令中没有不带借位的减法指令,所以在需要时,发须先将清。时,发须先将清。指令执行结果均在累加器中。指令执行结果均在累加器中。减法指令结果影响程序状态字寄存器的、减法指令结果影响程序状态字寄存器的、和标志。、和标志。()()BCDBCD码调正指令(条)码调正指令(条)说明:说明:结果影响程序状态字寄存器的、和标志。结果影响程序状态字寄存器的、和标志。码是用二进制形式表示十进数,例如十制数码是用二进制形式表示十进数,例如十制数4545,其码,其码形式形式4545。码只是一种表示形式,与其数值没有关系。码只是一种表示形式,与其数值没有关系。码用
28、位二进制码表示一位十进制数,这四位二码用位二进制码表示一位十进制数,这四位二进制数的权为进制数的权为84218421,所以码又称为,所以码又称为84218421码。如下表:码。如下表:十进制数码0123456789二进制码0000000100100011010001010110011110001001指令将中的二进制码自动调整为码。指令将中的二进制码自动调整为码。指令只能跟在或加法指令后,不指令只能跟在或加法指令后,不适用于减法。适用于减法。该指令结果影响程序状态字寄存器的、该指令结果影响程序状态字寄存器的、和标志。和标志。例例2.72.7说明下列指令的执行结果。说明下列指令的执行结果。解:解
29、:MOV A,#05H ;05H-AMOV A,#05H ;05H-A ADD A,#08H ;05H+08HA,A=0DH ADD A,#08H ;05H+08HA,A=0DH DA A ; DA A ;自动调整为码,自动调整为码,1313()加减指令(条)()加减指令(条)说明:以上指令通常不影响。说明:以上指令通常不影响。2 2、乘、除法指令、乘、除法指令()乘法指令(条)()乘法指令(条)说明:乘法结果影响的(积超过,则说明:乘法结果影响的(积超过,则置,否则为)和(总是清)以及标志。置,否则为)和(总是清)以及标志。()除法指令(条)()除法指令(条)说明:说明:除法结果影响的除法结
30、果影响的( (除数为除数为0 0,则置,否,则置,否则为则为0)0)和(总是清)以及标志。和(总是清)以及标志。当除数为时结果不确定。当除数为时结果不确定。()逻辑或指令(条)()逻辑或指令(条)()逻辑异或指令(条)()逻辑异或指令(条)()累加器清()累加器清0 0和取反指令(条)和取反指令(条)2 2、循环移位指令(条)、循环移位指令(条)说明:执行带进位的循环移位指令之前,必须给置位说明:执行带进位的循环移位指令之前,必须给置位或清或清0.0.例例2.92.9()()5 5,执行指令,执行指令,#,#之之后,()后,()0505,高位被清,而低位不变;执行指令,高位被清,而低位不变;执
31、行指令,#,#,高位不变,而低位被置;执行指,高位不变,而低位被置;执行指令令,#,#之后,(),高位不变,而之后,(),高位不变,而低位变反。低位变反。2.3.5 2.3.5 控制转移类指令控制转移类指令控制转移类指令的本质是改变程序计数器的内容,从控制转移类指令的本质是改变程序计数器的内容,从而改变程序的执行方向。控制转移指令分为:无条件转移指令、而改变程序的执行方向。控制转移指令分为:无条件转移指令、条件转移指令和调用条件转移指令和调用/ /返回指令。返回指令。、无条件转移指令(条)、无条件转移指令(条)()长转移指令说明:该指令可以转移到()长转移指令说明:该指令可以转移到6464程序
32、程序存储器中的任意位置。存储器中的任意位置。()绝对转移指令:()绝对转移指令:说明:该指令转移范围是说明:该指令转移范围是2。例例2.102.10指令:指令:1 1的执行结果。的执行结果。解:设标号地址解:设标号地址10301030, ,1 1标号地址标号地址=1100=1100,该指令执行后首先加该指令执行后首先加2 2变为变为10321032的高的高5 5位和位和11001100的低的低1111位拼装成新的值位拼装成新的值000100010000000000100010000000,即程序从,即程序从11001100开开始执行。始执行。()相对转移指令()相对转移指令说明:该指令的转移范
33、围是以本指令的下一条指令为中心说明:该指令的转移范围是以本指令的下一条指令为中心的的-128127B-128127B以内。在实际应用中,以内。在实际应用中,LJMPLJMP、AJMPAJMP和和SJMPSJMP后面的后面的addr16addr16、addr11addr11或或relrel都是用标号来代替的,不一定写出它们的都是用标号来代替的,不一定写出它们的具体地址。具体地址。()间接寻址的无条件转移指令:常用于散转程序()间接寻址的无条件转移指令:常用于散转程序、条件转移指令、条件转移指令()累加器判()累加器判0 0指令指令说明说明:转移范围与指令:转移范围与指令SJMP相同。相同。 ()
34、比较转移指令()比较转移指令()减()减1 1非零转移指令非零转移指令说明:说明:DJNZDJNZ指令通常用于循环程序中控制循环次数。指令通常用于循环程序中控制循环次数。转移范围与转移范围与SJMPSJMP指令相同。指令相同。以上指令结果不影响程序状态字寄存器以上指令结果不影响程序状态字寄存器PSWPSW。3 3、调用和返回指令、调用和返回指令()绝对调用指令:调用范围与()绝对调用指令:调用范围与AJMPAJMP相同。相同。()长调用指令:调用范围与()长调用指令:调用范围与LJMPLJMP相同。相同。 (3 3)返回指令)返回指令 (4 4)空操作)空操作2.3.6 2.3.6 位操作类指
35、令位操作类指令 前面介绍的指令全都是用前面介绍的指令全都是用“字节字节”来处理的:字节的移动、来处理的:字节的移动、加法、减法、逻辑运算、移位等。工业中有很场合需要处理开加法、减法、逻辑运算、移位等。工业中有很场合需要处理开关输出、继电器吸合,用字节来处理就比较麻烦,所以在关输出、继电器吸合,用字节来处理就比较麻烦,所以在80518051单片机中特意引入一个位处理机制。在项目中单片机中特意引入一个位处理机制。在项目中“位位”就是一个就是一个汽车转向灯的亮和灭。汽车转向灯的亮和灭。 位操作指令的操作数是位操作指令的操作数是“位位”,其取值只能是,其取值只能是0 0或或1 1,故又称,故又称为布尔
36、变量操作指令。位操作指令的操作对象是片内为布尔变量操作指令。位操作指令的操作对象是片内RAMRAM的位寻的位寻址区(即址区(即20H2FH20H2FH)和特殊功能寄存器)和特殊功能寄存器SFRSFR中的中的1111个位寻址的寄个位寻址的寄存器。片内存器。片内RAMRAM的的20H2FH20H2FH共共1616个单元个单元128128个位,我们为这个位,我们为这128128个个位的每个位均定义位的每个位均定义1 1个名称,个名称,00H7FH00H7FH,称为位地址。对于特殊,称为位地址。对于特殊功能寄存器功能寄存器SFRSFR中可位寻址的寄存器的每个位也有名称定义。中可位寻址的寄存器的每个位也
37、有名称定义。 对于位寻址,有以下三种不同的写法:对于位寻址,有以下三种不同的写法: 第一种是直接地址写法,如第一种是直接地址写法,如 MOV C,0D2H MOV C,0D2H 其中其中0D2H0D2H表示表示PSWPSW中中的的OVOV位寻址。位寻址。 第二种是点操作符写法,如第二种是点操作符写法,如 MOV C,0D0H.2MOV C,0D0H.2。 第三种是位名称写法,在指令格式中直接采用位定义名称,第三种是位名称写法,在指令格式中直接采用位定义名称,这种方式只适应于可以位寻址的这种方式只适应于可以位寻址的SFR,SFR,如如 MOV C,OVMOV C,OV。 (1 1)位传送指令)位
38、传送指令 说明:位传送指令必须与进位位说明:位传送指令必须与进位位C C进行,不能在其他两位之间进行,不能在其他两位之间传送。进位位传送。进位位C C也称为位累加器。也称为位累加器。 (2 2)位置位和位清零指令)位置位和位清零指令 (3 3)位运算指令)位运算指令 (4 4)位转移指令)位转移指令 说明:说明:JBCJBC与与JBJB指令区别,前者转移后并把寻址位清指令区别,前者转移后并把寻址位清0 0,后者,后者只转移不清只转移不清0 0寻址位。寻址位。 (5 5)判)判CyCy标志指令标志指令 例例2.11 2.11 用位操作指令编程计算逻辑方程用位操作指令编程计算逻辑方程P1.7=AC
39、C.0 x(B.0+P2.1)+/P3.2,P1.7=ACC.0 x(B.0+P2.1)+/P3.2,其中其中“+”+”表示逻辑或,表示逻辑或,“x”x”表示逻辑与。表示逻辑与。 解:程序段如下:解:程序段如下: MOV C,B.0MOV C,B.0 ORL C,P2.1 ORL C,P2.1 ANL C,ACC.0 ANL C,ACC.0 ORL C,/P3.2 ORL C,/P3.2 MOV P1.7,C MOV P1.7,C2.3.7 2.3.7 常用伪指令常用伪指令 单片机汇编语言程序设计中,除了使用指令系统规定的指单片机汇编语言程序设计中,除了使用指令系统规定的指令外,还要用到一些伪
40、指令。伪指令又称指示性指令,具有和令外,还要用到一些伪指令。伪指令又称指示性指令,具有和指令类似的形式,但汇编时伪指令并不产生可执行的目标代码,指令类似的形式,但汇编时伪指令并不产生可执行的目标代码,只是对汇编进行某种控制或提供某些汇编信息。只是对汇编进行某种控制或提供某些汇编信息。 1 1、定位为指令、定位为指令 ORGORG 格式:格式: 标号:标号: ORG ORG 地址表达式地址表达式 功能:规定程序块或数据块存放的起始位置功能:规定程序块或数据块存放的起始位置 例如:例如:ORG 1000HORG 1000H;表示指令;表示指令 MOV A,#20H MOV A,#20H 存放于存放
41、于1000H1000H开开始的单元。始的单元。 2 2、定义字节数据伪指令、定义字节数据伪指令 DBDB 格式:格式: 标号:标号: DB DB 字节数据表字节数据表 功能:字节数据表是多个字节数据、字符串或表达式,它功能:字节数据表是多个字节数据、字符串或表达式,它表示将字节数据表中的数据从左到右依次存放在指定地址单元。表示将字节数据表中的数据从左到右依次存放在指定地址单元。 例如:例如:ORG 1000HORG 1000H TAB:DB 2BH,0A0H,A,2 TAB:DB 2BH,0A0H,A,2* *4 4;表示从;表示从1000H1000H单元开单元开始的地方存放数据始的地方存放数
42、据2BH2BH,0A0H,41H(0A0H,41H(字母字母A A的的ASCIIASCII码码),08H.),08H. 3 3、定义字数据伪指令、定义字数据伪指令 DWDW 格式:格式: 标号:标号: DW DW 字数据表字数据表 功能:与功能:与DBDB类似,但类似,但DWDW定义的数据项为字,包括两个字节,定义的数据项为字,包括两个字节,存放时高位在前,低位在后。存放时高位在前,低位在后。 例如:例如:ORG 1000HORG 1000H DATA:DW 324AH,3CH; DATA:DW 324AH,3CH;表示从表示从1000H1000H单元开始的地方存单元开始的地方存放数放数 32
43、H,4AH,00H,3CH(3CH32H,4AH,00H,3CH(3CH以字的形式表示为以字的形式表示为003CH).003CH). 4 4、定义空间伪指令、定义空间伪指令 DSDS 格式:格式: 标号:标号: DS DS 表达式表达式 功能:从指定的地址开始,保留多个存储单元作为备用的功能:从指定的地址开始,保留多个存储单元作为备用的空间。空间。 例如:例如:ORG 1000HORG 1000H BUG:DS 50 BUG:DS 50 TAB:DB 22H; TAB:DB 22H;表示从表示从1000H1000H开始的地方预留开始的地方预留5050(1000H1031H1000H1031H)
44、个存储节空间,)个存储节空间,22H22H存放在存放在1032H1032H。 5 5、符号定义伪指令、符号定义伪指令EQUEQU或或 格式:符号名格式:符号名 EQU EQU 表达式表达式 符号名表达式符号名表达式 功能:将表达式的值或某个特定汇编符号定义为一个指定功能:将表达式的值或某个特定汇编符号定义为一个指定的符号名,只能定义单字节数据,并且必须遵循先定义后使用的符号名,只能定义单字节数据,并且必须遵循先定义后使用的原则,因此该语句通常放在源程序的开关部分。的原则,因此该语句通常放在源程序的开关部分。 例如:例如:LEN=10LEN=10 SUM EQU 21H SUM EQU 21H
45、MOV A,#LEN MOV A,#LEN;执行指令后,累加器;执行指令后,累加器A A中的值为中的值为0AH0AH 6 6、数据赋值伪指令、数据赋值伪指令 DATADATA 格式:符号名格式:符号名 DATA DATA 表达式表达式 功能:将表达式的值或某个特定汇编符号定义一个指定的符功能:将表达式的值或某个特定汇编符号定义一个指定的符号名,只能定义单字节数据,但可以先使用后定义,因此用它号名,只能定义单字节数据,但可以先使用后定义,因此用它定义数据可以放在程序末尾进行数据定义。定义数据可以放在程序末尾进行数据定义。 举例:举例: MOV A,#LEN MOV A,#LEN LEN DATA
46、 10 LEN DATA 10 7 7、数据地址赋值伪指令、数据地址赋值伪指令 XDATAXDATA 格式:符号名格式:符号名 XDATA XDATA 表达式表达式 功能:将表达式的值或某个特定汇编符号定义一个指定的功能:将表达式的值或某个特定汇编符号定义一个指定的符号名,可以先使用后定义,并且用于双字节数据定义。符号名,可以先使用后定义,并且用于双字节数据定义。 举例:举例:DELAY XDATA 0356HDELAY XDATA 0356H LCALL DELAY ; LCALL DELAY ;执行指令后,程序转到执行指令后,程序转到0356H0356H单元执单元执行。行。 2.3.8 2
47、.3.8 汇编子程序举例汇编子程序举例 例例2.12 2.12 试计算发动机燃油温度信号与油温的关系。试计算发动机燃油温度信号与油温的关系。 设电压与油温表为设电压与油温表为1 2 3 4V 22 30 38 54 1 2 3 4V 22 30 38 54 。发动机的发动机的燃油温度通常是燃油温度通常是电压信号,通过上表可以在得到一个电压信号,电压信号,通过上表可以在得到一个电压信号,算出燃油温度。由于输入的字符之间很难找到什么规律,建立算出燃油温度。由于输入的字符之间很难找到什么规律,建立表格时将字符和其对应的处理程序的地址一同存入。查表时先表格时将字符和其对应的处理程序的地址一同存入。查表
48、时先查找电压值,其后就是处理程序的入口地址(假设待转换量放查找电压值,其后就是处理程序的入口地址(假设待转换量放在在A A中,结果存放到中,结果存放到R2R2中)。程序代码如下:中)。程序代码如下: SRT: MOV DPTR,#TABSRT: MOV DPTR,#TAB MOV B, A MOV B, A LOOP: CLR A LOOP: CLR A MOVC A,A+DPTR MOVC A,A+DPTR INC DPTR INC DPTR CJNE A,B,NEXTCJNE A,B,NEXT CLR A CLR A MOVC A,A+DPTR MOVC A,A+DPTR MOV R2,A
49、 MOV R2,A NEXT:INC DPTR NEXT:INC DPTR SJMP LOOP SJMP LOOP TAB: DB 1 TAB: DB 1 DB 22 DB 22 DB 2 DB 2 DB 30 DB 30 DB 3 DB 3 DB 38 DB 38 DB 4 DB 4 DB 54 DB 542.4 2.4 单片机开发系统单片机开发系统 一个单片机系统从提出任务到正式投入运行的过程,称为单一个单片机系统从提出任务到正式投入运行的过程,称为单片机的开发。开发过程所用的设备称为开发工具。片机的开发。开发过程所用的设备称为开发工具。 单片机价格低、功能强、简单易学、使用方便,可用来组
50、成单片机价格低、功能强、简单易学、使用方便,可用来组成各种不同规模的应用系统,但由于它的硬件和软件的支持能力各种不同规模的应用系统,但由于它的硬件和软件的支持能力有限,自身无调试能力,因此必须借助于开发工具来排除应用有限,自身无调试能力,因此必须借助于开发工具来排除应用系统样机中的硬件故障,生成目标程序,并排除程序错误。当系统样机中的硬件故障,生成目标程序,并排除程序错误。当目标系统调试成功以后,还需要用开发工具把目标程序固化到目标系统调试成功以后,还需要用开发工具把目标程序固化到单片机内部或外部单片机内部或外部EEPROMEEPROM芯片中。芯片中。2.4.1 2.4.1 单片机开发系统的功
51、能单片机开发系统的功能 单片机应用系统中电路和程序的调试、程序的装入等,都必单片机应用系统中电路和程序的调试、程序的装入等,都必须借助于单片机开发系统,单片机开发系统是单片机编程调试须借助于单片机开发系统,单片机开发系统是单片机编程调试的必需工具。的必需工具。 单片机开发系统在硬件上增加了目标系统的在线仿真器、编单片机开发系统在硬件上增加了目标系统的在线仿真器、编译器等部件,所提供的软件除有简单的操作系统外,还增加了译器等部件,所提供的软件除有简单的操作系统外,还增加了目标系统的汇编和调试程序等。目标系统的汇编和调试程序等。 单片机开发系统又称为开发机或仿真器。仿真的目的是利用单片机开发系统又
52、称为开发机或仿真器。仿真的目的是利用开发机的资源(开发机的资源(CPUCPU、存储器和、存储器和I/OI/O设备等)来模拟要开发的单设备等)来模拟要开发的单片机应用系统的片机应用系统的CPUCPU、存储器和、存储器和I/OI/O操作,并跟踪和观察目标机操作,并跟踪和观察目标机的运行状态。的运行状态。 1 1、在线仿真功能、在线仿真功能 单片机的仿真器具有与所要开发的单片机系统相同的单片机单片机的仿真器具有与所要开发的单片机系统相同的单片机芯片,仿真器就是一个单片机系统。当单片机系统接线完毕后,芯片,仿真器就是一个单片机系统。当单片机系统接线完毕后,由于自身无法验证好坏,无调试能力,那么我们可以
53、把应用系由于自身无法验证好坏,无调试能力,那么我们可以把应用系统中的单片机芯片拔掉,插上在线仿真器的仿真头,此时单片统中的单片机芯片拔掉,插上在线仿真器的仿真头,此时单片机应用系统和仿真器共用一块单片机芯片,当在开发系统上通机应用系统和仿真器共用一块单片机芯片,当在开发系统上通过在线仿真器调试单片机应用系统时,就像使用应用系统中真过在线仿真器调试单片机应用系统时,就像使用应用系统中真实的单片机一样,称之为实的单片机一样,称之为“仿真仿真”。 2 2、调试功能、调试功能 开发系统对目标系统硬、软件的调试功能强弱直接影响到开开发系统对目标系统硬、软件的调试功能强弱直接影响到开发的效率。性能优良的单
54、片机开发系统应具有下列调试功能。发的效率。性能优良的单片机开发系统应具有下列调试功能。 (1 1)运行控制功能)运行控制功能 开发系统为了检查程序运行的结果,必开发系统为了检查程序运行的结果,必须对存在的硬件故障和软件错误进行定位。须对存在的硬件故障和软件错误进行定位。 1 1)单步运行:单步运行命令把函数和函数调用当作一个实)单步运行:单步运行命令把函数和函数调用当作一个实体来看待,必要时可以跳过函数。体来看待,必要时可以跳过函数。 2 2)断点设置:在调试程序的过程中,设置一些断点更好地)断点设置:在调试程序的过程中,设置一些断点更好地帮助用户分析程序的运行情况,有效地提高工作效率。帮助用
55、户分析程序的运行情况,有效地提高工作效率。 3 3)全速运行:能使)全速运行:能使CPUCPU从指定地址开始连续地全速运行目标从指定地址开始连续地全速运行目标程序。程序。 4 4)单片跟踪:类似单步运行过程,但可以跟踪到子程序中)单片跟踪:类似单步运行过程,但可以跟踪到子程序中运行。运行。 (2 2)目标系统状态的读出修改功能)目标系统状态的读出修改功能 当当CPUCPU停止执行目标系统的程序后,允许用户方便地读出或停止执行目标系统的程序后,允许用户方便地读出或修改目标系统资源的状态,以便检查程序运行的结果、设置断修改目标系统资源的状态,以便检查程序运行的结果、设置断点条件以及设置程序的初始参
56、数。可供用户读出点条件以及设置程序的初始参数。可供用户读出/ /修改的目标系修改的目标系统资源包括:统资源包括: 1 1)程序存储器(开发系统中的仿真)程序存储器(开发系统中的仿真RAMRAM或目标机中的程序或目标机中的程序存储器)。存储器)。 2 2)单片机中片内资源(工作寄存器、特殊功能寄存器、)单片机中片内资源(工作寄存器、特殊功能寄存器、I/OI/O、RAMRAM数据存储器、位单元)。数据存储器、位单元)。 3 3)系统中扩展的数据存储器、)系统中扩展的数据存储器、I/OI/O口。口。 3 3、跟踪功能、跟踪功能 高性能的单片机开发系统具有逻辑分析仪的功能,在目标程高性能的单片机开发系
57、统具有逻辑分析仪的功能,在目标程序运行过程中,能跟踪存储目标系统总线上的地址、数据和控序运行过程中,能跟踪存储目标系统总线上的地址、数据和控制信号的状态变化,跟踪存储器同步地记录总线上的信息,用制信号的状态变化,跟踪存储器同步地记录总线上的信息,用户可以根据需要显示跟踪存储器搜集到的信息,也可以显示某户可以根据需要显示跟踪存储器搜集到的信息,也可以显示某一位总线状态变化的波形。一位总线状态变化的波形。 4 4、程序固化功能、程序固化功能 在单片机应用系统中常要扩展在单片机应用系统中常要扩展EPROMEPROM或或EEPROMEEPROM作为存放程序和作为存放程序和常数的程序存储器,当应用程序尚
58、未调好之前可借用开发系统常数的程序存储器,当应用程序尚未调好之前可借用开发系统的存储器,当系统调试完毕,确认软件无故障时,应把用户应的存储器,当系统调试完毕,确认软件无故障时,应把用户应用系统的程序固化到用系统的程序固化到EEPROMEEPROM中去,中去,EEPROMEEPROM写入器就是完成这种写入器就是完成这种项目的专用设备。项目的专用设备。2.4.2 2.4.2 单片机应用系统设计单片机应用系统设计 随着单片机的普及,以及硬件技术的发展,用户自行设计及随着单片机的普及,以及硬件技术的发展,用户自行设计及制作一个单片机系统,不论是从技术上还是从制作时间以及元制作一个单片机系统,不论是从技术上还是从制作时间以及元件供应方面看,都已经不成什么问题,所以现在设计一个新的件供应方面看,都已经不成什么问题,所以现在设计一个新的控制系统时,通常都是自行选择元件,自行设计系统结构,即控制系统时,通常都是自行选择元件,自行设计系统结构,即所谓从元件开始进行设计。从元件级
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 击剑场景建设围挡施工协议
- 建筑工程质量管理:处方管理办法
- 医疗机构危险废弃物处理规范
- 旅游景区宣传策划团队聘用协议
- 建筑物流施工图设计合同模板
- 体育场馆地面施工合同
- 2025版化妆产品展示厅承包租赁合同3篇
- 2024年版油罐销售协议3篇
- 2025年度保安服务市场调研与竞争分析合同3篇
- 2025年度绿色建材板材采购合同3篇
- 烘干煤泥合同范例
- 4.1.1陆地水体间的相互关系课件高中地理湘教版(2019)选择性必修一
- 【MOOC】大学生心理学-中央财经大学 中国大学慕课MOOC答案
- 2025年“三基”培训计划
- 第20课 北洋军阀统治时期的政治、经济与文化 教案
- 山东省青岛实验高中2025届高三物理第一学期期末综合测试试题含解析
- 物理人教版2024版八年级上册6.2密度课件03
- 2024年广西普法云平台考试答案
- 2023-2024学年广东省深圳市福田区八年级(上)期末英语试卷
- 铁路设备售后服务方案
- 2023年中国华电集团有限公司招聘考试真题
评论
0/150
提交评论