单片机第三章(本)_第1页
单片机第三章(本)_第2页
单片机第三章(本)_第3页
单片机第三章(本)_第4页
单片机第三章(本)_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3-1 指令格式及其操作寻址方式指令格式及其操作寻址方式 一、基本概念一、基本概念1、指令及其格式、指令及其格式机器指令:用机器指令:用2进制数进制数0、1表示的命令代码。表示的命令代码。机器语言:由机器指令描述的程序语言。机器语言:由机器指令描述的程序语言。助记符指令:用英文字母和助记符指令:用英文字母和16进制数代替机器指令形成的符号进制数代替机器指令形成的符号指令。指令。助记符语言:由助记符指令形成的程序语言,又称汇编语言。助记符语言:由助记符指令形成的程序语言,又称汇编语言。MCS-51单片机汇编语言指令格式:单片机汇编语言指令格式:标号:标号: 操作码操作码 操作数操作数(目的操作数

2、,源操作数)(目的操作数,源操作数) ;注释;注释2、指令中的符号标识、指令中的符号标识Rn、Ri、#data、#data16、addr11、addr16、 Direct、rel、bitA:寄存器寻址的累加器;:寄存器寻址的累加器; ACC:直接寻址的累加器;:直接寻址的累加器;:间接寻址符号间接寻址符号(X):):X中的内容中的内容(X):): 由由X的内容作为地址的单元中的内容的内容作为地址的单元中的内容:箭头左边的内容被右边的内容代替箭头左边的内容被右边的内容代替 :本条指令的起始地址本条指令的起始地址 1、立即寻址立即寻址 操作数以常数的形式出现,直接包含在指令字节中。操作数以常数的形

3、式出现,直接包含在指令字节中。例如:例如: MOV A,#40H MOV DPTR, #TABLE ;TABLE为标号地址为标号地址 MOV P1, #00000111B MOV R3,#18二、寻址方式二、寻址方式寻址方式:指令给出参与运算的数据的方式。寻址方式:指令给出参与运算的数据的方式。MCS-51主要有主要有6种寻址方式:种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、基址立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、基址寄存器变址寄存器间接寻址、相对寻址寄存器变址寄存器间接寻址、相对寻址2、直接寻址直接寻址 在指令中在指令中含有操作数的直接地址含有操作数的直接地址,该

4、地址指出了参与运算,该地址指出了参与运算的数所在的字节单元地址或位地址的数所在的字节单元地址或位地址(位寻址)(位寻址)。直接寻址的。直接寻址的寻址范围:寻址范围:(1)内部数据存储器的低)内部数据存储器的低128字节,字节,00H7FH;(2)特殊功能寄存器,注意除)特殊功能寄存器,注意除A、AB、DPTR外,其他外,其他SFR只能采用直接寻址方式。只能采用直接寻址方式。(3)位寻址:所有可寻址位;)位寻址:所有可寻址位;例如:例如:MOV A,70H ;A(70H) MOV C,70H ;CY(70H) 注意:对累加器注意:对累加器A直接寻址和位寻址时,要用符号直接寻址和位寻址时,要用符号

5、“ACC”或直或直接地址接地址“0E0H”,以区别于寄存器寻址。,以区别于寄存器寻址。3、寄存器寻址寄存器寻址 由指令指出以某寄存器的内容为操作数。由指令指出以某寄存器的内容为操作数。寄存器寻址方式使寄存器寻址方式使 用范围:用范围:(1)内部)内部RAM中的中的32个工作寄存器个工作寄存器R0R7; (2)A、AB、C、DPTR;例如:例如: INC R3 ;R3(R3)+1 操作码操作码 操作数操作数4、寄存器间接寻址寄存器间接寻址 指令中指出某一个寄存器的内容为操作数的地址,以符指令中指出某一个寄存器的内容为操作数的地址,以符号号“”表示。其寻址范围:表示。其寻址范围:(1)以)以R0,

6、R1为地址指针,寻址内部为地址指针,寻址内部RAM 007FH 和外和外RAM的低的低256B;(2)以)以DPTR为地址指针,寻址外部为地址指针,寻址外部RAM的的64KB空间和扩展空间和扩展I/O口。口。(3)以堆栈)以堆栈SP为地址指针,寻址栈区单元;为地址指针,寻址栈区单元;例:例:MOV A,R0;A(R0) MOVX A,DPTR ;A(DPTR))5、基址寄存器变址寄存器间接寻址基址寄存器变址寄存器间接寻址以基址寄存器(以基址寄存器(PC、 DPTR)和变址寄存器()和变址寄存器(A)的内)的内容容作为无符号数相加作为无符号数相加,形成,形成16位地址,访问程序存储器(表位地址,

7、访问程序存储器(表格)。格)。 MOVC A,A+PC ;A(A)+(PC) MOVC A,A+DPTR ;A(A)+(DPTR)6、相对寻址相对寻址指令中给定地址的指令中给定地址的相对偏移量相对偏移量rel,以,以PC当前值为当前值为基地址,基地址,加上加上rel所得结果为转移目标地址。所得结果为转移目标地址。 rel:符号数,单字节补码,:符号数,单字节补码,-128+127。例如:例如:1000H:JC 80H ;判;判C转移指令,转移指令,2字节字节分析:当分析:当CY=1时,转移时,转移3-2 指令系统指令系统3.2.1 程序状态字程序状态字PSW即即标志寄存器标志寄存器,字节地址为

8、:,字节地址为:D0H,可字节寻址、位寻址。,可字节寻址、位寻址。作用:存放指令执行时有关信息、状态。作用:存放指令执行时有关信息、状态。PSW字格式:字格式: D7D6D5D4D3D2D1D0CYACF0RS1RS0OVPPSW.7:CY,进位标志,布尔处理器的累加器,进位标志,布尔处理器的累加器C。 PSW.6:AC,半进位标志。,半进位标志。PSW.5:F0,用户标志,可置位和复位。,用户标志,可置位和复位。PSW.4-PSW.3:RS1、RS0,指出当前工作寄存器区,指出当前工作寄存器区Rn。PSW.2:OV,溢出标志。,溢出标志。CY CS=1时溢出,时溢出,OV=1。PSW.1:保

9、留位,可单独使用,表示方法为:保留位,可单独使用,表示方法为PSW.1。PSW.0:P,奇偶标志,指,奇偶标志,指A中中“1”的个数,为奇数时置的个数,为奇数时置1。3.2.2 指令系统指令系统一、数据传送指令、数据传送指令 共有共有29条,包括数据传送、数据交换、栈操作三类。条,包括数据传送、数据交换、栈操作三类。1、内部、内部RAM间的数据传送(间的数据传送(16条)条)(1)指令格式)指令格式指令格式:指令格式:MOV 目的字节目的字节,源字节源字节功功 能:把源字节指定的变量传送到目的字节指定能:把源字节指定的变量传送到目的字节指定的存储单元中,源字节内容不变。的存储单元中,源字节内容

10、不变。(2)操作数)操作数操作数:操作数:A,Rn,direct,Ri,DPTR,#data (3)指令描述:)指令描述:以以A目的操作数目的操作数MOV A,Rn(direct , Ri , #data ) ;A(Rn) 以以Rn为目的操作数为目的操作数MOV Rn,direct (A, #data ) ;Rn(direct)以以direct为目的操作数为目的操作数MOV direct1,direct2(A,Rn, Ri , #data ) ;direct1(direct2) 以以Ri为目的操作数为目的操作数MOV Ri,A (direct, #data ) ;(;(Ri)(A)16位数据传

11、送指令位数据传送指令MOV DPTR, #data16;高;高8位送位送DPH,低,低8位送位送DPL例例3-1:设(:设(70H)= 60H,(,(60H)=20H,P1为输入口,状态为输入口,状态为为0B7H,执行如下程序:,执行如下程序: MOV R0,#70H ;(78H 70H) MOV A, R0 ;(E6H) MOV R1,A ;(F9H) MOV B, R1 ;(87H F0H) MOV R0, P1 ;(A6 90H)结果:结果:(70H)= 0B7H(B) = 20H(R1) = 60H(R0) = 70H要求:掌握指令功能、寻址方式、结果要求:掌握指令功能、寻址方式、结果

12、例例3-2:给出下列指令的执行结果,指出源操作数的寻址方式。:给出下列指令的执行结果,指出源操作数的寻址方式。 MOV20H, #25H MOV25H, #10H MOVR2, #0CAH MOVR0, #20H MOVA,R0 MOVR1, A MOVB,R1 MOV A, R2 MOVR1,A结果:结果:(20H)=25H, (25H)=10H,(R2)=0CAH,(R0)=20H,(A)=25H,(R1)=25H,(B)=10H, (A)=0CAH (25H)=0CAH,2、累加器、累加器A与外部数据存储器(或扩展与外部数据存储器(或扩展I/O口)口)传递数据传递数据MOVXMOVXA,

13、DPTRMOVXA,Ri ;均为单字节指令;均为单字节指令 MOVXDPTR,AMOVXRi,A功能:功能:A与外部与外部RAM或扩展或扩展I/O口数据的相互传送。口数据的相互传送。说明:说明:(1)用)用Ri只能间接寻址只能间接寻址256个单元(个单元(0000H00FFH),),当访问超过当访问超过256个字节的外个字节的外RAM空间时,需利用空间时,需利用P2口口 确定高确定高8位地址,用位地址,用DPTR可访问整个可访问整个64KB空间。空间。(2)可用作为扩展)可用作为扩展I/O口的输入口的输入/输出指令输出指令例例3-3:将外:将外RAM 2010H中内容送中内容送 外外RAM 2

14、020单元中。单元中。分析:读分析:读2010H中内容中内容A写数据写数据 2020H中中方法一、流程如右图方法一、流程如右图程序如下:程序如下:MOV P2,#20H ;输出高;输出高8位地址位地址MOV R0,#10H ;置;置读读低低8位间接地址位间接地址MOVX A,R0 ;读;读2010H中数据中数据MOV R1,#20H ;置;置写写低低8位间接地址位间接地址MOVX R1,A ;将;将A中数据写入中数据写入2020H中中程序如下:程序如下:MOV DPTR,#2010HMOVX A,DPTR MOV DPTR,#2020HMOVX DPTR,A方法二、流程如右图:方法二、流程如右

15、图:3、查表指令、查表指令MOVC表格:程序存储器除存放程序外,还可存放一些常数,这种数表格:程序存储器除存放程序外,还可存放一些常数,这种数 据的结构称为据的结构称为表格。表格。指令格式:指令格式:MOVCA,A+DPTR ;A(A)+(DPTR)MOVCA,A+PC ;PC (PC)+1 A (A)+(PC)功能:以功能:以DPTR、PC为基地址,与为基地址,与A中的中的8位无符号数位无符号数相加,得相加,得 到一个新到一个新16位地址,将其内容送位地址,将其内容送A。(1)用)用DPTR作为基寄存器作为基寄存器 例例3-4:设外部:设外部ROM的的2000H单元开始的连续单元开始的连续1

16、0个字个字 节中已存放有节中已存放有09的平方数,要求根据的平方数,要求根据A中的中的 内容(内容(09)来查找对应的平方值。)来查找对应的平方值。START: MOVA,#3MOV DPTR,#TABLE MOVC A,A+DPTR ;查表;查表 ORG 2000H 2003单元内容单元内容TABLE:DB 0,1,4,9,16,25,36,49,64,81结果:结果:A (2003H),(),(A)=09H特点:可访问整个特点:可访问整个ROM的的64KB空间,表格可放在空间,表格可放在 ROM的任何位置,与的任何位置,与MOVC指令无必然的关系。指令无必然的关系。(2)用PC作为基寄存器

17、例例3-5:ORG 1000H1000H MOV A,#30H;1002H MOVC A,A+PC;结果是:结果是:A (1033H)优点:不改变优点:不改变PC的状态,根据的状态,根据A的内容取表格常数。的内容取表格常数。缺点:缺点:(1)表格只能存放在查表指令以下的)表格只能存放在查表指令以下的256个单元内。个单元内。(2)当表格首地址与本指令间有其他指令时,须要调整偏移量,)当表格首地址与本指令间有其他指令时,须要调整偏移量,调整量为下一条指令的起始地址到调整量为下一条指令的起始地址到表格首址表格首址之间的字节数。之间的字节数。4、堆栈操作、堆栈操作 堆栈,由特殊功能寄存器堆栈,由特殊

18、功能寄存器SP(81H)管理,始终指向其栈)管理,始终指向其栈顶顶位置,栈底视需要设在内部位置,栈底视需要设在内部RAM低低128B内。内。(1)进栈操作:)进栈操作: PUSHdirect 功能:先功能:先SP (SP)+ 1,再(,再(SP)(direct);); 其中:其中:direct为源操作数;目的操作数为为源操作数;目的操作数为SP,隐含。,隐含。例例3-6:已知:(:已知:(A)=30H,(,(B)=70H, (R0)=10H 执行:执行: MOVSP,#60H ;设栈底;设栈底PUSHACC ;PUSHB PUSH 0H结果:(结果:(61H)=30H,(,(62H)=70H,

19、(63H)=10H, (SP)=63H(2)出栈操作:)出栈操作: POP direct 功能:先功能:先direct(SP),再),再SP (SP)1 其中:其中:direct为目的操作数,源操作数为为目的操作数,源操作数为SP,隐含。,隐含。例例3-7:已知:(:已知:(SP)=62H,(,(62H)=70H,(,(61H)=30H执行:执行:POP DPH POP DPL 结果:(结果:(DPTR)=7030H,(,(SP)=60H例例3-8:已知:(:已知:(A)=30H,(,(B)=70H, (R0)=10H 执行:执行: MOVSP, #60H ;设栈底;设栈底PUSHACC ;P

20、USHB PUSH 0H MOV A, #20H MOV R0, #12H POP 0H POP ACC POP B 5、与、与A的数据交换指令的数据交换指令数据交换指令共数据交换指令共5条,完成累加器条,完成累加器A和内部和内部RAM单单元之间的字节或半字节交换。元之间的字节或半字节交换。(1)整字节交换:)整字节交换:XCH A,Rn ;(;(A)(Rn)XCH A,direct ;(;(A)(direct)XCH A,Ri ;(;(A)(Ri)(2)半字节交换:)半字节交换:XCHD A,Ri ;(;(A)03(Ri)03(3)累加器自身高低)累加器自身高低4位交换位交换SWAP A ;

21、(;(A)74(A)30例例3-9 设(设(A)=57H,(,(20H)=68H,(,(R0)=30H,(30H)=39H,求下列指令的执行结果,求下列指令的执行结果(1)XCH A,20H ; 结果:(结果:(A)=68H,(,(20H)=57H(2)XCH A,R0 ;结果:结果: (A)=39H,(,(30H)=57H(3)XCH A,R0 ;结果:结果: (A)=30H,(,(R0)=57H(4)XCHD A,R0 ;结果:结果: (A)=59H,(,(30H)=37H)(5)SWAP A ;结果:结果: (A)=75H例例3-10:设内部:设内部RAM 40H、41H 单元中连续存放

22、有单元中连续存放有4个压缩的个压缩的 BCD码数据,试编程序将这码数据,试编程序将这4 个个BCD码倒序排列。码倒序排列。分析:流程如右图分析:流程如右图程序如下:程序如下:MOV A,41HSWAP AXCH A,40HSWAP AMOV 41H,A二、算术运算指令二、算术运算指令包括、包括、加、加1、减、减1、十进制调整指令,共、十进制调整指令,共有有24条,一般影响条,一般影响PSW中的中的CY、AC、OV、P标志位。标志位。1、加减法指令、加减法指令(12条)条)(1)指令助记符:)指令助记符: ADD + ADDC 带带C+ SUBB 带带C-(2)以)以A为目的操作数为目的操作数

23、不带进位加法不带进位加法 ADD 4条条ADD A, Rn (Ri, direct, #data);A (A)+(Rn)带进位加法指令带进位加法指令 ADDC 4条条ADDC A,direct (Rn ,Ri, #data) ;A (A)+(direct)+(CY) 带进位减法指令带进位减法指令 SUBB 4条条SUBB A,Ri (Rn, direct, #data) ;A(A)-(Ri)-(CY)例例3-11:设(:设(A)=D3H,(,(30H)=E8H 执行:执行: ADD A,30H 1101 0011 (D3) (-45)补)补 无符号数无符号数 211 +) 1110 1000

24、(E8) (-24)补)补 232 1 1011 1011结果:结果:CY=1,AC=0,P=0,OV=0,(,(A)=BBH (补码真值(补码真值-69,正,正确)确)例例3-12:设(:设(A)=49H,CY=1, 执行:执行: SUBB A,#54H0100 1001 (49H) 0101 0100 (54H) -) 1 1111 0100 (借位(借位1)结果:结果:CY=1,AC=0,P=1,OV=0,(,(A)=F4H(真值(真值-12,正,正确)确) 例例3-14:试编制:试编制4位十六进制数加法程序,假定和数超过双字节位十六进制数加法程序,假定和数超过双字节(21H20H)+(

25、31H30H) 42H41H40H分析:分析:先低字节作不带进位求和,再作带进位高字节求和。先低字节作不带进位求和,再作带进位高字节求和。 流程图(略),程序如下:流程图(略),程序如下:MAIN:MOV A,20H ADD A,30H MOV 40H, A MOV A,21H ADDC A,31H ;带低字节进位加法;带低字节进位加法 MOV 41H, A MOVA,#00H ;准备处理最高位;准备处理最高位ADDCA, #00HMOV 42H, ASJMP例例3-15:编制下列减法程序,要求:编制下列减法程序,要求:(31H30H)(41H40H) 31H30H分析分析:流程图(略),程序

26、如下:流程图(略),程序如下:MAIN:CLR C ;CY清零清零 MOV A, 30H SUBB A, 40H MOV 30, A ;存低字节;存低字节 MOV A, 31H SUBB A, 41H MOV 31H, A ;存高字节;存高字节HERE:SJMP HERE2、加、加1减减1指令指令 助记符:助记符:INC,DEC操作数:操作数:A,direct,Ri,Rn,DPTR指令描述:(指令描述:(不影响不影响PSW,即使有进位或借位,即使有进位或借位,CY也不变,除也不变,除A影响影响P标志标志)(1)INC:加:加1 5条条INC A ; A (A)+1INC Rn ; Rn(Rn)

27、+1INC Ri ; (Ri)(Ri)+1INC direct ; direct(direct)+1INC DPTR ; DPTR(DPTR)+1(2)DEC:减:减1 4条条DEC A ; A (A)1DEC Rn ; Rn(Rn)1DEC Ri ; (Ri)(Ri)1DEC direct ; direct(direct) 13、十进制调整指令、十进制调整指令格式:格式:DA A 指令用于两个指令用于两个BCD码加法运算的加码加法运算的加6修正,只影响修正,只影响CY位。位。指令的使用条件:指令的使用条件:(1)只能紧跟在加法指令()只能紧跟在加法指令(ADD/ADDC)后进行)后进行(2)

28、两个加数必须已经是)两个加数必须已经是BCD码码(3)只能对累加器)只能对累加器A中结果进行调整中结果进行调整例如:(例如:(A)=56H,(,(R5)=67H,(,(BCD码)执行:码)执行: ADD A,R5 DAA 结果:(结果:(A)=23H,(,(CY)=1 例例3-16:试编制十进制数加法程序(单字节:试编制十进制数加法程序(单字节BCD加法),假定加法),假定和数为单字节,要求:和数为单字节,要求: (20H)+(21H) 22H 分析:分析:流程如右图流程如右图程序如下:程序如下: MOV R0, #20H MOV A, R0 INC R0 ADD A, R0 DA A INC

29、 R0 MOV R0,A4、乘除法指令、乘除法指令2条单字节条单字节4机器周期的指令。机器周期的指令。(1)8位无符号数乘法指令位无符号数乘法指令MULAB ;B 158 A70(A)(B)PSW: 1)若乘积大于)若乘积大于256,OV=1;否则;否则OV=0;2)CY总是清总是清“0”。例如:(例如:(A)=50H,(,(B)=A0H,执行,执行MUL AB后后结果:(结果:(B)=32H,(,(A)=00H,(,(OV)=1(2)8位无符号除法指令位无符号除法指令DIVAB ; (A)(A/B)的(商)的(商); (B)(A/B)的(余数)的(余数)PSW: 1)CY、OV,清,清“0”

30、 2)若()若(B)=0,OV=1。例如:(例如:(A)=2AH,(,(B)=05H,执行,执行DIV AB后后结果:(结果:(A)=08H,(,(B)=02H,(,(OV)=0 MOV A,R1 MOV B,R2 MUL AB MOV R5, A MOV R4, B MOV A,R0 MOV B,R2MUL AB ADD A,R4MOV R4, A MOV A, BADDC A, #00HMOV R3, A例例3-17:双字节乘法程序,要求:双字节乘法程序,要求:(R0R1)(R2)R3R4R5分析:分析:设(设(R0)=J,(,(R1)=K,(,(R2)=L,则:,则:例例3-18:编制将

31、:编制将A中的数转换成三位中的数转换成三位BCD码程序,百位放在码程序,百位放在20H,十位、个位放在,十位、个位放在21H中。中。分析:分析:(A)/100商(百位)商(百位)(20H););余数余数/10 商(十位)商(十位)(21H)74; 余数余数 (个位)(个位)(21H)30;流程流程如右图如右图程序如下:程序如下:MOV B,#100DIV ABMOV 20H, AMOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV 21H, A三、逻辑运算指令三、逻辑运算指令 24条1、 基本与、或、异或运算指令基本与、或、异或运算指令逻辑逻辑“与与”指令指令 6条条A

32、NL A,Rn(direct, Ri, #data) ;A(A)(Rn)ANL direct , A (#data);A( direct )(A)逻辑逻辑“或或”指令指令 6条条ORL A,Ri (Rn, direct, #data) ;A (A)(Ri)ORL direct , A (#data);A( direct )(A)逻辑逻辑“异或异或”指令指令 6条条XRL A,direct (Ri,Rn,#data) ;direct(A) ( direct )XRL direct,#data (A) ;direct(direct) data2、对、对A简单逻辑指令简单逻辑指令1)清零与取反)清零

33、与取反CLR A ;清;清0CPL A ;求反;求反2)循环移位指令)循环移位指令RL A ;RLC A ;RR A ;RRC A ;例例3-19:按要求编程,完成下列各题:按要求编程,完成下列各题:1)选通工作寄存器组中)选通工作寄存器组中0区为工作区。区为工作区。 2)利用移位指令实现累加器)利用移位指令实现累加器A的内容乘的内容乘6。 3)将)将ACC的低的低4位送位送P1口的低口的低4位,位,P1口的高口的高4位不变。位不变。例例3-19解:解:1)ANL PSW,#11100111B ;PSW的的D4、D3位为位为002)CLR C RLC A ;左移一位,相当于乘;左移一位,相当于

34、乘2 MOV R0, A CLR C RLC A ;再乘;再乘2,即乘,即乘4 ADD A, R0;乘;乘2 + 乘乘4 = 乘乘6 3)ANL A, #0FH ;高;高4位屏蔽(清位屏蔽(清0) ANL P1, #F0H ;P1低低4位清位清0 ORL P1, A ;(;(P1.31.0)(A30)四、位操作指令四、位操作指令布尔处理器布尔处理器C,可寻址内部,可寻址内部RAM中的可寻址位:中的可寻址位:bit = 007FH,和,和SFR中的可寻址位。中的可寻址位。位地址的描述形式:位地址的描述形式: (1)直接位地址,如)直接位地址,如MOV C, 70H(2)字节地址)字节地址+位地址

35、,如位地址,如20H.1,ACC.4,PSW.4等等(3)位寄存器名称,如)位寄存器名称,如F0,C,RS1,RS0等等(4)伪指令定义过的位名称)伪指令定义过的位名称注意:注意: CY-直接地址,是位寻址;直接地址,是位寻址; C -位寄存器,为寄存器寻址。位寄存器,为寄存器寻址。例如:例如:CLR CY ;机器码;机器码C2 D7H CLR C;机器码;机器码C3H1、位传送指令、位传送指令MOV C,bitMOV bit,C例如:例如:MOVC,06H MOVP1.0,C 2、位变量修改指令、位变量修改指令CLR C; C0CLR bit ; bit0bitCSETB C ;C1SETB

36、 bit ;bit 1例如:例如:SETB P1.0CPL C ; C( )CPL bit ; bit( )3、位变量逻缉、位变量逻缉“与与”指令指令ANLC,bit ; C(C)(bit)ANLC,/ bit ; C(C)( )bitbit例如:设例如:设P1.0、P1.1为输入口,为输入口,P1.3为输出口,执行程序为输出口,执行程序MOVC,P1.0ANLC,P1.1MOVP1.3, C结果:结果:P1.3 = P1.0 P1.1 。4、位变量逻缉、位变量逻缉“或或”指令指令ORLC,bit ; C(C)(bit)ORLC,/ bit ; C(C)( )例如:设例如:设P1为输出口,执行

37、下列程序,指出功能:为输出口,执行下列程序,指出功能:(1) MOVC,00HORLC,01HMOVP1.7,C(2) MOV P1,#00H LOOP: SETBP1.0LCALLDELAYCLRP1.0LCALLDELAYAJMPLOOP(3) CLR A LOOP: SETBCRLCAMOVP1,ALCALLDELAYJNBACC.7,LOOP SJMP $五、控制转移指令(五、控制转移指令(22条)条) 1、无条件转移指令、无条件转移指令 无条件转移应用举例:无条件转移应用举例:1)1030H:AJMP 100H ;机器码为;机器码为2100H 目的地址:目的地址:PC=1032H的高

38、的高5位位+ 100H的低的低11位位 = 00010 + 001 0000 0000 = 1100H 2)0000H:AJMP 40H ;程序转移到;程序转移到0040H 3)1100H:SJMP 21H ;目标地址为;目标地址为1123H 4)1000H:SJMP NEXT;目的地址;目的地址NEXT=1020H 则:相对地址则:相对地址rel =1EH(补码数)(补码数) 5)0060H:SJMP FEH ;踏步指令;踏步指令目的地址:目的地址:PC =(PC)+ 2 + FEH = 0060H +2 +FFFEH = 0060H6)0000H:LJMP 0030H ;2、条件转移指令、

39、条件转移指令根据某种条件判断转移的指令,执行时:根据某种条件判断转移的指令,执行时:条件满足时,转移执行;条件满足时,转移执行; 条件不满足时,顺序执行;条件不满足时,顺序执行;目的地址目的地址:(PC)=(PC)+ 指令字节数指令字节数 2或或3 + rel包括判包括判A、判、判Bit、判、判C三种,共有三种,共有7条:条:1)判)判A转移,转移,2字节字节JZ rel ;条件:(;条件:(A)= 0 ;转移转移JNZ rel ;条件:(;条件:(A)0 2)判)判Bit转移,转移,3字节字节JB bit, rel ;条件:(;条件:(bit)= 1JNB bit, rel ;条件:(;条件

40、:(bit)= 0JBC bit, rel ;条件:(;条件:(bit)= 1转移,并清转移,并清 bit位位3)判)判C转移,转移,2字节字节JC rel ;条件:(;条件:(C)= 1JNC rel ;条件:(;条件:(C)= 0例例3-24 利用利用P1.0、P1.1作为外接发光二极管的启停按作为外接发光二极管的启停按钮,钮,P1.2作为外接发光二极管端,试编制控制程序。作为外接发光二极管端,试编制控制程序。程序如下:程序如下:START: MOV P1,#03H ;作;作P1口输入时先置口输入时先置1 WT1:JBP1.0,WT1SETBP1.2 WT2:JBP1.1,WT2CLRP1

41、.2SJMPWT13、比较不相等转移指令、比较不相等转移指令CJNEA, direct,rel;CJNEA, #data, rel;CJNE Rn, #data, rel;CJNE Ri, #data, rel;执行时:执行时:1)两操作数相等,顺序执行,且)两操作数相等,顺序执行,且CY=0。2)两操作数不相等,转移执行,且对于无符号)两操作数不相等,转移执行,且对于无符号数若:数若:第一操作数第二操作数,第一操作数第二操作数,CY=1,否则,否则CY清清“0”。目的地址:(目的地址:(PC)=(PC)+ 指令字节数指令字节数3 + rel例例3-24:内部:内部RAM 30H开头的开头的2

42、0个个连续单元中,存放有连续单元中,存放有20个数,统计个数,统计等于等于8的单元个数,结果放在的单元个数,结果放在R2中。中。分析:分析:取一个数与取一个数与8比较,相等比较,相等R2加加1,不相等跳过。并作,不相等跳过。并作20次重复次重复即可。即可。流程如右图,流程如右图,程序如下:程序如下: ORG 1000HSTART:MOV R0, #30HMOV R7, #20MOV R2, #0LOOP:CJNE R0,#08H,NEXTINCR2NEXT:INCR0DEC R7 CJNE R7, #00H, LOOP4、减、减“1”不为不为0转移指令转移指令DJNZRn, rel ;2字节指

43、令,字节指令,2周期指令周期指令DJNZdirect,rel ;3字节指令,字节指令,2周期指令周期指令目的地址:(目的地址:(PC)=(PC)+ 指令字节数指令字节数2或或3 + rel 例例3-25:利用:利用DJNZ指令设计循环延时程序,已知指令设计循环延时程序,已知fosc=12MHz1) 单循环延时单循环延时DELAY:MOV R7, #10DJNZ R7, RETt=1us210+1+2=23us 2) 双重循环延时双重循环延时DELAY:MOV R7, #0AHDL: MOV R6, #64HDJNZ R6, DJNZ R7, DLRET t=(2us100+2+1)10+1+2

44、=2033us 3) 三重循环延时三重循环延时DELAY:MOVR7, #10DL2:MOVR6, #200 DL1:MOVR5, #250DJNZR5, DJNZR6, DL1DJNZR7, DL2RETt=(2us250+2+1) 200)+2+1) 10+1+2 = 1006033us 1 秒秒 例例3-26 P1口控制发光二极管,口控制发光二极管,延时节日灯组合。延时节日灯组合。LOOP:MOV P1,0AAH;灯光;灯光1ACALL DELAYMOV P1,055H;灯光;灯光2 ACALL DELAYSJMP LOOPDELAY: MOV R7, 0FFHDL1:MOV R6, 0

45、FFHDL2:NOP;空操作;空操作DJNZ R6, DL2DJNZ R7, DL1RET5、调用指令与返回指令、调用指令与返回指令1) 主程序和子程序结构主程序和子程序结构2) 调用和返回调用和返回 子程序是独立于主程序的具有特定功能的程序子程序是独立于主程序的具有特定功能的程序段,单独编写,能被主程序调用,又能返回主程段,单独编写,能被主程序调用,又能返回主程序。序。3) 堆栈和堆栈和PC值的保留值的保留 调用子程序时,调用子程序时,CPU自动将当前自动将当前PC值保留在堆栈中,其值保留在堆栈中,其中高位放在中高位放在PCH,子程序返回时,自动弹出,送入,子程序返回时,自动弹出,送入PC。4) 现场保护和恢复现场现场保护和恢复现场现场保护现场保护 是指将需要保护的单元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论