1、项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术第一节第一节 指令简介指令简介 一、指令概述一、指令概述 指令是规定单片机进行某种操作的命令。一条指令只能完成有限的功能,为使单片机完成一定的或复杂的功能就需要一系列指令。单片机能够执行的各种指令的集合就称为指令系统。MCS-51单片机指令系统共有33种功能,42种助记符,111条指令。二、指令格式二、指令格式 不同指令翻译成机器码后字节数也不一定相同。按照机器码个数,指令可以分为以下三种。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 MCS-51单片
2、机指令系统包括49条单字节指令、45条双字节指令和17条三字节指令。采用助记符表示的汇编语言指令格式如下:标号:操作码 目的操作数,源操作数;注释 标号是加在指令的前面表示该指令位置的符号地址,可有可无;标号由18个字符组成,第一个字符必须是英文字母,不能是数字或其它符号;标号后必须用“:”。操作码是由助记符表示的字符串,表示指令所实现的操作功能;如MOV表示数据传送操作、ADD表示加法操作等。操作数指出了参加运算的数据或数据存放的位置。操作数一般有以下几种形式:没有操作数项,操作数隐含在操作码中,如RET指令;只有一个操作数,如CLR P1.0指令;有两个操作数,如MOV A,#0EFH指令
3、,操作数之间以逗号相隔;有三个操作数,如CJNE A,#08H,NEXT指令,操作数之间也以逗号相隔。注释是对语句的解释说明,用以提高程序的可读性,注释前必须加“:”。计算机对它不作处理,注释部分不影响指令的执行。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术第二节第二节 寻址方式寻址方式 MCS-51指令系统共使用了7种寻址方式,包括寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。1立即数寻址立即数寻址 在这种寻址方式中,指令多是双字节的。立即数寻址是指将操作数直接写在指令中。例如:指令MOV A,#3AH执行的操
4、作是将立即数3AH送到累加器A中,该指令就是立即数寻址。注意:立即数前面必须加“#”号,以区别立即数和直接地址。该指令的执行过程如图所示。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 2直接寻址直接寻址 在这种寻址方式中,把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。设内部RAM 3AH单元的内容是88H,那么指令MOV A,3AH的执行过程如图所示。3寄存器寻址寄存器寻址 寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存
5、器B、地址寄存器DPTR等。执行MOV R1,A指令后,内部RAM 09H单元的值就变为20H,如图所示。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 4寄存器间接寻址寄存器间接寻址 寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。执行MOV R1,A指令后,内部RAM 09H单元的值就变为20H,如图所示。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 5变址寻址变址寻址 在这种寻址方式中,是将基址寄存器与变址寄存器的内容相加,结
6、果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。设累加器A=02H,DPTR=0300H,外部ROM(0302H)=55H,则指令MOVC A,A+DPTR的执行结果是累加器A的内容为55H。该指令的执行过程如图所示。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 6相对寻址相对寻址 相对寻址是指程序计数器PC的当前内容与指令第二字节所给出的数相加,其结果作为跳转指令的转移地址(也称目的地址)。该类寻址方式主要用于跳转指令。现假设该指令存放于0100H、0101H单元,且rel=30H,若(C)
7、1,因PC当前值(下一条指令的地址)为0102H,故执行完该指令后,程序转向(PC)+30H=0132H地址执行。0132H地址称为目的地址,0100H称为源地址。该指令执行过程如图所示。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 7位寻址位寻址 位寻址是指按位进行的操作,MCS-51单片机中,操作数不仅可以按字节为单位进行操作,也可以按位进行操作。当我们把某一位作为操作数时,这个操作数的地址称为位地址。例如:指令SETB 3DH执行的操作是将内部RAM位寻址区中的3DH位置1。设内部RAM 27H单元原来的内容是00H,执行SETB 3DH
8、后,由于3DH对应着内部RAM 27H的第5位,因此该位变为1,也就是27H单元的内容变为20H。该指令的执行过程如图所示。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术第三节第三节 汇编语言指令系统汇编语言指令系统 MCS-51单片机指令系统包括111条指令,按功能可以划分为五类:数据传送指令(29条)算术运算指令(24条)逻辑运算指令(24条)控制转移指令(17条)位操作指令 (17条)符号符号含含 义义Rn表示当前选定寄存器组的工作寄存器表示当前选定寄存器组的工作寄存器R0R7Ri表示作为间接寻址的地址指针表示作为间接寻址的地址指针R0或或
9、R1#data表示表示8位立即数,即位立即数,即00HFFH#data16表示表示16位立即数,即位立即数,即0000HFFFFHaddr16表示表示16位地址,用于位地址,用于64K范围内寻址范围内寻址addr11表示表示11位地址,用于位地址,用于2K范围内寻址范围内寻址direct8位直接地址,可以是内部位直接地址,可以是内部RAM区的某一单元区的某一单元或某一专用功能寄存器的地址或某一专用功能寄存器的地址Rel带符号的带符号的8位偏移量(位偏移量(-128+127)Bit位寻址区的直接寻址位位寻址区的直接寻址位(X)X地址单元中的内容地址单元中的内容(X)将将X地址单元中的内容作为地址
10、,该地址单元中的内地址单元中的内容作为地址,该地址单元中的内容容将将 后面的内容传送到前面去后面的内容传送到前面去项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 1以累加器以累加器A为目的地址的传送指令(为目的地址的传送指令(4条)条)数据传送类指令是最常用、最基本的一类指令,包括内部RAM、寄存器、外部RAM以及程序存储器之间的数据传送。一、内部一、内部8位数据传送指令位数据传送指令MOV ,助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期MOV A,RnARnn=071MOV A,directA(direct)1MOV A
11、,RiA(Ri)i=0,11MOV A,#dataA#data 1项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 2以以Rn为目的地址的传送指令(为目的地址的传送指令(3条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期MOV Rn,ARn An=071MOV Rn,directRn(direct)n=071MOV Rn,#dataRn#datan=071 3以直接地址为目的地址的传送指令(以直接地址为目的地址的传送指令(5条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期MOV direct,
12、A(direct)A 1MOV direct,Rn(direct)Rnn=071MOV direct2,direct1(direct2)(direct1)2MOV direct,Ri(direct)(Ri)i=0,12MOV direct,#data(direct)#data 2项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 4以寄存器间接地址为目的地址的传送指令(以寄存器间接地址为目的地址的传送指令(3条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期MOV Ri,A(Ri)Ai=0,11MOV Ri,direct(R
13、i)(direct)i=0,12MOV Ri,#data(Ri)#datai=0,11 二、二、16位数据传送指令(位数据传送指令(1条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期MOV DPTR,#data16DPTR#data16把把16位常数装入数据指针位常数装入数据指针2 三、外部数据传送指令(三、外部数据传送指令(4条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期MOVX A,DPTRA(DPTR)把把DPTR所对应的外部所对应的外部RAM地址中的内地址中的内容传送给累加器容传送给累加器A2MOVX A,RiA(Ri)i=0,
14、12MOVX DPTR,A(DPTR)A结果不影响结果不影响P标志。标志。2MOVX Ri,A(Ri)Ai=0,1,结果不影响,结果不影响P标志。标志。2项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 四、交换和查表类指令四、交换和查表类指令 1字节交换指令(字节交换指令(3条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期XCH A,RnARnA与与Rn内容互换内容互换1XCH A,directA(direct)1XCH A,RiA(Ri)i=0,11 2半字节交换指令(半字节交换指令(1条)条)助记符格式助记符格式相
15、应操作相应操作指令说明指令说明机器周期机器周期XCHD A,RiA3-0(Ri)3-0低低4位交换,高位交换,高4位不变位不变1 3累加器累加器A中高中高4位和低位和低4位交换(位交换(1条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期SWAP A(A)3-0(A)7-4高、低高、低4位互相交换位互相交换1项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 4查表指令(查表指令(2条)条)5堆栈操作指令(堆栈操作指令(2条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期MOVC A,A+PCA(A
16、+PC)A+PC所指外部程序存储单所指外部程序存储单元的值送元的值送A2MOVC A,A+DPTRA(A+DPTR)A+DPTR所指外部程序存储所指外部程序存储单元的值送单元的值送A2助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期PUSH directSPSP+1(SP)(direct)将将SP加加1,然后将源地址单元中的,然后将源地址单元中的数传送到数传送到SP所指示的单元中去所指示的单元中去2POP direct(direct)(SP)SPSP-1将将SP所指示的单元中的数传送到所指示的单元中的数传送到direct地址单元中地址单元中,然后然后SPSP-12项目二项目
17、二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 1加法指令(加法指令(8条)条)2减法指令(减法指令(4条)条)一、加、减法指令一、加、减法指令助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期ADD A,RnAA+Rnn=071ADD A,directAA+(direct)1ADD A,RiAA+(Ri)i=0,11ADD A,#dataAA+#data 1ADDC A,RnAA+Rn+Cyn=071ADDC A,directAA+(direct)+Cy 1ADDC A,RiAA+(Ri)+Cyi=0,11ADDC A,#dataAA+
18、#data+Cy 1助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期SUBB A,RnAA-Rn-Cyn=071SUBB A,directAA-(direct)-Cy 1SUBB A,RiAA-(Ri)-Cyi=0,11SUBB A,#dataAA-#data-Cy 1项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 3BCD码调正指令(码调正指令(1条)条)4加加1减减1指令(指令(9条)条)助记符格式助记符格式指令说明指令说明机器周期机器周期DA ABCD码加法调正指令码加法调正指令1助记符格式助记符格式相应操作相应操作指令
19、说明指令说明机器周期机器周期INC AAA+1影响影响PSW的的P标志标志1INC RnRnRn+1n=071INC direct(direct)(direct)+1 1INC Ri(Ri)(Ri)+1i=0,11INC DPTRDPTRDPTR+1 2DEC AAA-1影响影响PSW的的P标志标志1DEC RnRnRn-1n=071DEC direct(direct)(direct)-1 1DEC Ri(Ri)(Ri)-1i=0,11 二、乘、除法指令二、乘、除法指令项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 1乘法指令(乘法指令(1条)条
20、)2除法指令(除法指令(1条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期MUL ABBAA*B无符号数相乘,高位存无符号数相乘,高位存B,低位存,低位存A4助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期DIV ABAA/B的商的商BA/B的余数的余数无符号数相除,商存无符号数相除,商存A,余,余数存数存B4 一、逻辑运算指令一、逻辑运算指令 1逻辑与指令(逻辑与指令(6条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期ANL A,directAA(direct)按位相与按位相与1ANL A,RnAA Rnn=071A
21、NL A,RiAA(Ri)i=0,11ANL A,#dataAA#data 1ANL direct,A(direct)(direct)A不影响不影响PSW的的P标志标志1ANL direct,#data(direct)(direct)#data不影响不影响PSW的的P标志标志2项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 2逻辑或指令(逻辑或指令(6条)条)3逻辑异或指令(逻辑异或指令(6条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期ORL A,directAA(direct)按位相与按位相与1ORL A,RnAA
22、 Rnn=071ORL A,RiAA(Ri)i=0,11ORL A,#dataAA#data 1ORL direct,A(direct)(direct)A不影响不影响PSW的的P标志标志1ORL direct,#data(direct)(direct)#data不影响不影响PSW的的P标志标志2助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期XRL A,directAA(direct)按位相与按位相与1XRL A,RnAA Rnn=071XRL A,RiAA(Ri)i=0,11XRL A,#dataAA#data 1XRL direct,A(direct)(direct)A
23、不影响不影响PSW的的P标志标志1XRL direct,#data(direct)(direct)#data不影响不影响PSW的的P标志标志2项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 4累加器累加器A清清0和取反指令(和取反指令(2条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期CLR A(A)00HA中内容清中内容清0,影响,影响P标志标志1CPL A(A)()A中内容按位取反,影响中内容按位取反,影响P标志标志1 二、循环移位指令(二、循环移位指令(4条)条)助记符格式助记符格式相应操作相应操作指令说明指令说
24、明机器周期机器周期RL AA7-A0循环左移循环左移1RLC ACyA7-A0带进位循环左移带进位循环左移,影响影响Cy标志标志1RR AA7-A0循环右移循环右移1RRC ACyA7-A0带进位循环右移带进位循环右移,影响影响Cy标志标志1 控制转移类指令的本质是改变程序计数器PC的内容,从而改变程序的执行方向。控制转移指令分为:无条件转移指令、条件转移指令和调用/返回指令。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 一、无条件转移指令(一、无条件转移指令(4条)条)1长转移指令长转移指令助记符格式助记符格式相应操作相应操作指令说明指令说明
25、机器周期机器周期LJMP addr16PCaddr16程序跳转到地址为程序跳转到地址为addr16开始的开始的地方执行地方执行2 2绝对转移指令绝对转移指令(1条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期AJMP addr11PC10-0addr11程 序 跳 转 到 地 址 为程 序 跳 转 到 地 址 为PC1511addr11开始的地方执行开始的地方执行,2k内绝对转移内绝对转移2 3相对转移指令相对转移指令(1条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期SJMP relPCPC+rel-80H(-128)7FH(127)短
26、转移)短转移2 4间接寻址的无条件转移指令(间接寻址的无条件转移指令(1条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期JMP A+DPTRPCA+DPTR64K内相对转移内相对转移2项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 二、条件转移指令(二、条件转移指令(8条)条)1累加器累加器A判判0指令(指令(2条)条)3减减1非零转移指令(非零转移指令(2条)条)助记符格式助记符格式相应操作相应操作机器周期机器周期JZ rel若若A=0,则则PCPC+rel,否则顺序执行否则顺序执行2JNZ rel若若A0,则则PC
27、PC+rel,否则顺序执行否则顺序执行2 2比较转移指令(比较转移指令(4条)条)记符格式记符格式相应操作相应操作机器周期机器周期CJNE A,#data,rel若若A#data,则则PCPC+rel,否则顺序执行;若,否则顺序执行;若 A#data,则,则Cy=1,否则,否则Cy=02CJNE Rn,#data,rel若若 Rn#data,则,则PCPC+rel,否则顺序执行;若,否则顺序执行;若Rn#data,则,则Cy=1,否则,否则Cy=02CJNE Ri,#data,rel若若(Ri)#data,则,则PCPC+rel,否则顺序执行;若,否则顺序执行;若(Ri)#data,则则Cy=
28、1,否则,否则Cy=02CJNE A,direct,rel若若A(direct),则),则PCPC+rel,否则顺序执行;,否则顺序执行;若若(A)(direct),则),则Cy=1,否则,否则Cy=02助记符格式助记符格式相应操作相应操作机器周期机器周期DJNZ Rn,relRnRn-1,若,若Rn0,则,则PCPC+rel,否则顺序执行否则顺序执行2DJNZ direct,rel(direct)(direct)-1,若(,若(direct)0,则,则PCPC+rel,否则顺序执行,否则顺序执行2项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术
29、三、三、调用和返回指令(调用和返回指令(5条)条)1绝对调用指令(绝对调用指令(1条)条)3返回指令(返回指令(2条)条)2长调用指令(长调用指令(1条)条)助记符格式助记符格式相应操作相应操作机器周期机器周期ACALL addr11PC PC+2SP SP+1,SPPC0-7SP SP+1,SPPC8-15PC0-10 addr112助记符格式助记符格式相应操作相应操作机器周期机器周期LCALL addr16PCPC+3SP SP+1,SPPC0-7SP SP+1,SPPC8-15PC addr162助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期RETPC8-15 SP
30、,SP SP-1PC0-7 SP,SP SP-1子程序返回子程序返回2RETIPC8-15 SP,SP SP-1PC0-7 SP,SP SP-1中断程序返回中断程序返回2项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 4空操作(空操作(1条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期NOP空操作空操作消耗消耗1个机器周期个机器周期1 1位传送指令(位传送指令(2条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期MOV C,bitC y(bit)位传送指令,结果影响位传送指令,结果影响Cy标志
31、标志2MOV bit,C(bit)C y位传送指令,结果不影响位传送指令,结果不影响PSW2 2位置位和位清零指令(位置位和位清零指令(4条)条)助记符格式助记符格式相应操作相应操作指令说明指令说明机器周期机器周期CLR CC y 0位清位清0指令,结果影响指令,结果影响Cy标志标志1CLR bit(bit)0位清位清0指令,结果不影响指令,结果不影响PSW1SETB CC y1位置位置1指令,结果影响指令,结果影响Cy标志标志1SETB bit(bit)1位置位置1指令,结果不影响指令,结果不影响PSW1项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应
32、用技术 3位运算指令(位运算指令(6条)条)4位运算指令(位运算指令(6条)条)助记符格式助记符格式相应操作相应操作机器周期机器周期JB bit,rel若(若(bit=1),则),则PCPC+3+rel,否则顺序执行,否则顺序执行2JNB bit,rel若(若(bit=0),则),则PCPC+3+rel,否则顺序执行,否则顺序执行2JBC bit,rel若(若(bit=1),则),则PCPC+3+rel,并使并使(bit)0,否则顺序执行,否则顺序执行2 5判判CY标志指令(标志指令(2条)条)助记符格式助记符格式相应操作相应操作机器周期机器周期JC rel若若CY=1,则,则PCPC+2+r
33、el,否则顺序执行,否则顺序执行2JNC rel若若 CY=0,则,则PCPC+2+rel,否则顺序执行,否则顺序执行2项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 5判判CY标志指令(标志指令(2条)条)助记符格式助记符格式相应操作相应操作机器周期机器周期JC rel若若CY=1,则,则PCPC+2+rel,否则顺序执行,否则顺序执行2JNC rel若若 CY=0,则,则PCPC+2+rel,否则顺序执行,否则顺序执行2 1定位伪指令定位伪指令ORG格式:标号:ORG 地址表达式功能:规定程序块或数据块存放的起始位置 2定义字节数据伪指令定义
34、字节数据伪指令DB格式:标号:DB 字节数据表功能:字节数据表可以是多个字节数据、字符串或表达式,它表示将字节数据表中的数据从左到右依次存放在指定地址单元。3定义字数据伪指令定义字数据伪指令DW格式:标号:DW 字节数据表功能:功能:与DB类似,但DW定义的数据项为字,包括两个字节,存放时高位在前,低位在后。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 4定义空间伪指令定义空间伪指令DS格式:标号:DS 地址表达式功能:从指定的地址开始,保留多少个存储单元作为备用的空间。5符号定义伪指令符号定义伪指令EQU或或=格式:符号名 EQU 表达式符号
35、名=表达式功能:将表达式的值或某个特定汇编符号定义为一个指定的符号名,只能定义单字节数据,并且必须遵循先定义后使用的原则,因此该语句通常放在源程序的开头部分。6数据赋值伪指令数据赋值伪指令DATA格式:符号名 DATA 表达式功能:将表达式的值或某个特定汇编符号定义一个指定的符号名,只能定义单字节数据,但可以先使用后定义,因此用它定义数据可以放在程序末尾进行数据定义。7数据地址赋值伪指令数据地址赋值伪指令XDATA格式:符号名 XDATA 表达式功能:将表达式的值或某个特定汇编符号定义一个指定的符号名,可以先使用后定义,并且用于双字节数据定义。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单
36、片机控制汽车汽车单片机单片机应用技术应用技术第四节第四节 C语言指令系统语言指令系统C语言有如下优点。(1)对单片机的指令系统不需要了解,仅要求对存储器有了解。(2)编译器管理寄存器的分配、不同存储器的寻址及数据类型等细节。(3)程序结构化,程序有规范的结构,可以通过函数实现小功能执行。(4)具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性。(5)用近似人的思维来使用关键字和运算函数。(6)提供强大包含有多个标准子程序的库,具有较强的数据处理能力。(7)很容易将新程序植入已编写好的程序,因为C语言具有模块化编程技术。(8)编程和程序调试时间短,编程效率高。项目二项目二 汽车转向灯
37、的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 单片机C5l语言是一种结构化的程序设计语言,C语言程序的结构如图所示。1.顺序结构(顺序结构(sequence)顺序结构就是按顺序地执行各条语句,无需循环也无需跳转,它是最简单也是最基本的流程控制语句。2.选择结构(选择结构(selection)选择结构又称判断结构或分支结构,它根据是否满足给定的条件而从多组操作中选择一种操作。选择结构的主要语句是if语句。3.循环结构(循环结构(repetition)循环结构又称为重复结构,即在一定条件下反复执行某一部分的操作,循环结构的主要语句是for,while,do-while语句
38、。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支(选择)结构和循环结构。1.表达语句与复合语句表达语句与复合语句 1)表达式语句 表达式语句是众多语句中最基本的一种语句。所谓表达式语句就是由一个表达式构成的一个程序语句。1)基本if语句基本if语句的格式如下:if(表达式)语句组1;else 语句组2;2)复合语句 复合语句就是把多个语句用“”括起来组成一个语句,组合在一起形成具有一定功能的模块,这种由若干条语句组成的语句块称为复合语句。2.选择语句选择语句 选择语句又称为条件语句
39、(分支语句),此语句能够改变程序的流程。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 2)if-else-if语句当有多个分支选择时,可采用if-else-if语句,其一般格式如下:if(表达式)语句组1;else if(表达式2)语句组2;else if(表达式3)语句组3;else if(表达式m)语句组m;else if(表达式n)语句组n;项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 3)switch语句 当编程遇到的判断条件较少时(3个判断条件以下),if语句执行效果较好,但是当遇到判
40、断条件较多时,if语句就会降低程序的可读性。C语言还提供了另一种用于多分支选择的switch语句,其一般形式为:switch(button)case 常量表达式1:语句组1;break;case 常量表达式1:语句组1;break;case 常量表达式n:语句组n;break;default:语句组n+1;执行该语句时,先计算“表达式”的值,并逐个与case后面的“常量表达式”的值相比较,当“表达式”的值与某个“常量表达式”的值相等时,即执行其后的语句,再执行break语句,跳出switch语句的执行,继续执行下一条语句。如表达式的值与所有case后的“常量表达式”均不相同时,则执行defau
41、lt后的语句。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 3.循环语句循环语句 循环语句作用:当条件满足时,重复执行程序段,执行程序功能。给定的条件称为循环条件,反复执行的程序段称为循环体。在C语言中,循环程序结构分为三种语句:while语句、do-while语句和for语句。1)while语句 while语句的一般形式为:while(表达式)语句组;/循环体 其中表达式是循环条件,语句组为循环体while语句的执行过程是计算表达式的值,当值为真(非0)时,执行循环体语句;当值为假(0)时,则退出整个while循环语句,while语句执行过程
42、如图所示。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 2)do-while语句 do-while语句的一般形式为:do 语句组;/循环体 while(表达式);此循环与while循环的区别在于:它先执行一次循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。do-while语句执行过程如图所示。3)for语句在C语言中,for语句使用最为灵活,它完全可以取代 while语句。它的最简单最常用的形式为:for(循环变量赋初值;循环条件;修改循环变量)语句组;/循环体
43、 项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 for语句的执行过程如下:(1)首先执行“循环变量赋初值”,一般为一个赋值表达式。(2)判断“循环条件”,若其值为真(非0),则执行for语句中指定的内嵌语句组,然后执行下面第(3)步;若其值为假(0),则结束循环,转到第(5)步。该语句决定什么时候退出循环。(3)执行“修改循环变量”,定义每一次循环后变量如何变化。(4)转回上面第(2)步继续执行。(5)循环结束,执行for语句下面一条语句。其执行过程如图所示。三种循环的比较:(1)while和do-while循环,循环体中应包括使循环趋于结束的
44、语句。(2)for语句功能最强,也最常用。(3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成,而for语句包括实现循环变量的初始化。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 1.C语言数据类型语言数据类型 单片机C51语言的基本数据类型如表所示。在C语言中,数据类型可分为:基本数据类型、构造数据类型、指针类型、空类型四大类。表列出了Keil uVision 3 C51支持的数据类型。类型说明类型说明关键字关键字所占字节数所占字节数取值范围取值范围有符号整型有符号整型signed in
45、t2-32768+32767无符号整型无符号整型unsigned int2065535有符号长整型有符号长整型signed long4-2147483648+2147483647无符号长整型无符号长整型unsigned long404294967295有符号字符型有符号字符型signed char1-128+127无符号字符型无符号字符型unsigned char10255浮点型浮点型float41.175494E-383.402823E+38指针型指针型*13对象的地址对象的地址位类型位类型bit1位(位(1bit)0或或1可寻址位可寻址位sbit1位(位(1bit)0或或18位特殊功能寄存
46、器位特殊功能寄存器sfr1025516位特殊功能寄存器位特殊功能寄存器Sfr162065535项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 1)整型(int)整型分为有符号整型(signed int)和无符号整型(unsigned int)两种,默认为signed int。它们都在内存中占2个字节,用来存放双字节数据。表示有符号整型数的signed int,数值范围为-32768+32767。字节中最高位表示数据的符号,“0”表示正数,“1”表示负数,负数用补码表示。如果超出这个范围,int数据将会溢出。2)长整形(long)long表示长整形
47、,分为signed long和unsigned long两种,默认为signed long。两者在内存中占4个字节。有符号长整形signed long的数值取值范围是-2 147 483 648+2 147 483 647,无符号长整型数unsigned long的数值取值范围是04 294 967 295。3)字符型(char)char表示字符型,分为signed char和unsigned char两种,默认为signed char。长度为1个字节,用来存放单字节的数据。signed char类型表示范围为-128+127,unsigned char类型表示范围为0255。项目二项目二 汽
48、车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 4)浮点型(float)float型在十进制中有7位有效数字,符合IEEE-745标准的单精度浮点型数据。它在内存中占4个字节,字节中最高位表示数据的符号,“1”表示负数,“0”表示正数,数值范围是1175494E-383402823E+38。字母E(或e)表示以10为底的指数,如123E3=1231 000,但字母之前必须有数字,且之后必须为整数。5)指针型(*)指针型(*)是一种特殊的数据类型,它本身就是一个变量,这个变量存放的是指向另一个数据的地址,它占据一定的内存单元。指针长度一般为l3个字节。根据所指的变
49、量类型不同,可以是整型指针(int*)、浮点型指针(float*)和字符型指针(char*)等。例如int*point表示一个整型的指针变量。6)位类型(bit)位类型是单片机C51语言编译器的一种扩充数据类型,可以定义一个位类型变量,但不能定义位指针,也不能定义位数组。它的值只能是一个二进制位:“0”或“1”。项目二项目二 汽车转向灯的单片机控制汽车转向灯的单片机控制汽车汽车单片机单片机应用技术应用技术 7)可寻址位(sbit)可寻址位(sbit)也是单片机C51语言编译器的一种扩充数据类型,其作用是可以访问芯片内部RAM中的可寻址位或特殊功能寄存器中的可寻址位。其定义方法有三种:sbit位
50、变量名=位地址;sbit位变量名=特殊功能寄存器名位位置;sbit位变量名=字节地址位位置。8)8位特殊功能寄存器(sfr)8位特殊功能寄存器(sfr)也是单片机C51语言编译器的一种扩充数据类型,占用1个字节,值域为0255,利用它可以访问单片机内部所有的8位特殊功能寄存器。定义方法如下:sfr特殊功能寄存器=地址常数。9)16位特殊功能寄存器(sfrl6)在一些新型8051单片机中,特殊功能寄存器经常组合成16位来使用。采用关键字sfrl6可以定义这种16位的特殊功能寄存器。2.C语言运算符语言运算符 运算符是编译程序执行特定算术或逻辑操作的符号,单片机C51语言和C语言基本相同,主要有三
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。