单片机讲义第7讲

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

18
第3章 AT89C51 指令系统
3.空操作指令 NOP 执行这条指令除PC内容加1外,不影响任何标志位和 其他寄存器。NOP指令常用来产生一个机器周期的延 迟。 4.调用与返回指令 在程序设计中,有些如延时、显示等具有一定功 能的程序在一个系统中常常被多次使用,为了避免重 复编写相同功能的程序,使程序编写和调试更加容易, 通常把这些具有一定功能的经常被反复使用的程序段 作为子程序。
1 2 1 2 1 2 2 2 2 2 2 2 3 3 3
1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
位逻辑 运算
判位转 移
23
第3章 AT89C51 指令系统
1.位数据传送指令 这组指令的功能是将源操作数位地址单元的值传送 给目标操作数指向的位地址单元中,源操作数内容不 变。 [例3.24] MOV C,07H ; MOV C,20H.7 等效
CY
A7
A0
图3-5 带进位左循环移位指令示意图
9
第3章 AT89C51 指令系统
RR A (3) RR A的指令功能是将累加器A的内容右循 环移位。如图3-6所示,累加器A的最低位移 入最高位,同时其他各位依次右移。
A7
A0
图3-6 右循环移位指令示意图
10
第3章 AT89C51 指令系统
RRC
2
第3章 AT89C51 指令系统
1.逻辑与指令 “与”指令是将源操作数与目的操作数按位相与,其结果送入目的操 作数中。“与”指令可以屏蔽操作数的某些位,即使操作数某些位清零, 其他位保持不变。 这类指令 的助记符为 ANL , 共有 6 条 ANL ANL ANL ANL A, Rn A, direct A, #data direct ,A (R0)=0F0H
21
第3章 AT89C51 指令系统
3.3.5 位操作类指令 AT89C51有一个完整的位处理机,用于对位地址进 行操作,在3.2节中已经说明,只有内部RAM 20H~ 2FH单元和单元地址能被8整除的特殊功能寄存器能够 进行位操作,所有的位操作都是直接寻址方式进行的。 在位处理器中,位的传送和逻辑运算是通过进位标志 CY来完成的,CY的作用相当于CPU中的累加器A。 位操作指令共17条,如表3-5所示。
12
第3章 AT89C51 指令系统 表3-4 控制转移类指令
13
第3章 AT89C51 指令系统
14
第3章 AT89C51 指令系统
1.无条件转移指令 无条件转移指令是指当程序执行到这条指令时,程 序将无条件地转移到指令指向的地址单元取指运行。 (1) AJMP为短转移指令。 2k (2) LJMP为长转移指令。 64K (3) SJMP为相对转移指令。 (-128 ~ +127) (4) “JMP @A+DPTR”为间接转移指令,用它可实 现分支转移。 注意: 转移范围 64K
15
第3章 AT89C51 指令系统 2.有条件转移指令 有条件转移指令是指根据指令中给出的条件进行判断,若条件成 立,则程序转向指定的目的地址执行,否则顺序执行程序。有条件 转移指令的目标地址都在相对于该指令的下一条指令为-128~+127 的区域内 这类指令共有 6 条 JZ JNZ CJNE CJNE rel rel; 判零转移指令 A, direct, rel A, #data, rel
CJNE Rn, #data, rel CJNE @Ri, #data, rel; 比较转移指令 这类指令不影响任何操作数。 16
第3章 AT89C51 指令系统
1) 累加器判零指令 JZ指令的功能是判断累加器A的值。若累加器A的值 为0,则程序转移到目标地址;否则,顺序执行程序。 JNZ指令的功能是判断累加器A的值。若累加器A的 值不为0,则程序转移到目标地址;否则,顺序执行程 序。 例: 设(A)=01H JZ LABEL1
(5) SETB C 使进位标志位内容置1; (6) SETB bit 使位地址单元内容置1。
25
第3章 AT89C51 指令系统
3.位逻辑运算指令 (1) ANL C,bit指令功能是把源操作数位的内容与
目标操作数CY的内容进行与运算,结果送入CY中; (2) ANL C,/bit指令功能是对源操作数位取反后, 再与目标操作数进行与运算,结果存入CY中,但不改 变源操作数本身的值; 设 (20H)=00H; 例 CY=1
ANL A, @Ri
ANL direct , #data 例: 设 (A)=0A3H, ANL A, R0 结果 (A)=0A0H ; A 的低四位清零
3
第3章 AT89C51 指令系统
2.逻辑或指令 “或”指令是将源操作数与目的操作数按位相或,其结果送入目的操作 数中。“或”指令可以使操作数的数据位置1,即使操作数某些位置1,其 他位保持不变。 这类指令 的助记符为 ORL , 共有 6 条 ORL ORL ORL ORL ORL 例: A, Rn A, direct A, #data direct, A direct , #data
上面介绍了逻辑类运算指令,逻辑指令特点是按位进行
6
第3章 AT89C51 指令系统
5.移位指令 AT89C51移位指令有四种,都是对累加器A进行操 作。这组移位指令只能对操作数移一位,若要移多位,源自文库则要通过编写程序完成。
7
第3章 AT89C51 指令系统
RL (1)
A RL A的指令功能是将累加器A的内容左循
5
第3章 AT89C51 指令系统 4.累加器清零与取反 , CLR A; 是单字节指令 机器码 E4H
指令功能是将累加器A的内容清零。 CPL A ;机器码 F4H
指令功能是将累加器A的内容按位取反,即累加器A中 各位1变0,0变1。 例 (A)=55H CPL CLR A; (A)=0AAH A; ( A)=00H
22
第3章 AT89C51 指令系统
表3-5 位操作指令
助记符 类型 操作码 功能 字节 机器周期
位传送
MOV C,bit MOV bit,C
A2 bit 92 bit
C←(bit) bit←C
2 2
1 2
位修正
CLR C CLR bit CPL C CPL bit SETB C SETB bit ANL C, bit ANL C, /bit ORL C, bit ORL C, /bit JC rel JNC rel JB bit, rel JNB bit, rel JBC bit, rel
A
(4) RRC A的指令功能是将累加器A的内容和 进位标志一起右循环移位。如图3-7所示,累 加器A的最低位移入进位位CY,同时其他各 位依次右移,CY位移入累加器A的最高位。
CY
A7
A0
图3-7 带进位右循环移位指令示意图
11
第3章 AT89C51 指令系统
3.3.4 控制转移类指令 控制转移类指令主要以改变程序计数器PC内容为目 标,用来控制程序执行的流向。它主要分为以下几类, 如表3-4所示。
环移位。如图3-4所示,累加器A的最高位移入 最低位,同时其他各位依次左移。
A7
A0
图3-4 左循环移位指令示意图
8
第3章 AT89C51 指令系统
RLC A (2) RLC A的指令功能是将累加器A的内容和进 位标志一起左循环移位。如图3-5所示,累加器 A的最高位移入进位位CY,同时其他各位依次 左移,CY位移入累加器A的最低位。
第3章 AT89C51 指令系统
单片机原理与应用 第七讲 主要内容 第3章 AT89C51指令系统 1. 2. 3. 3.3.3 逻辑操作与移位指令 3.3.4 控制转移类指令 3.3.5 位操作类指令
1
第3章 AT89C51 指令系统
3.3.3 逻辑操作与移位指令 这类指令主要包括与、或、异或、求反、清零、移 位等操作指令。 逻辑操作与移位指令如表3-3(略)所示。共有 24 按参与运算的操作数的个数可分为: 单操作数逻辑运算和双操作数逻辑运算两大类。 下面分别予以介绍 条,
3) 减1条件转移指令 这组指令的功能是先将操作数的内容减1,然后判断结果。如果不为0,则 转移到目标地址;否则,则顺序执行程序。 DJNZ DJNZ Rn, rel
direct, rel
这类指令的功能是,每执行一次本命令,将指定的 Rn 或 direct 的内容减1 并判断其是否为 0, 若不为 0, 转向目的地址,若为 0, 则结束循环程序
ORL A, @ Ri
设 (A)= 52H ORL A, # 0FH 结果 (A)= 5FH; 逻辑或指令用做置位
4
第3章 AT89C51 指令系统
3.逻辑异或指令 “异或”指令是将源操作数与目的操作数按位相异或,即不同为1,相同为0, 其结果送入目的操作数。“异或”指令可以使操作数的数据位取反,即使操作数 某些位取反,其他位保持不变。 这类指令 的助记符为 XRL , 共有 6 条 XRL A, Rn XRL A, direct XRL A, @Ri XRL A, #data XRL direct ,A XRL direct , #data 例1: 设 (A)=5FH XRL 例1: XRL A, #0FH ; A, R7 ; (A)= 50H (A)= 00H 设 (A)=5FH (R7)=5FH
20
第3章 AT89C51 指令系统 上面介绍了控制转移指令:该节学习重点: 上面介绍了控制转移指令:该节学习重点: 1. 条件转移指令,其寻址方式为 相对寻址,寻址范围为 (-128---+127); 2. 无条件转移指令范围, 不同指令有不同的转移范围。 3. 无条件转移指令和 调用指令 LCALL ACALL 指令的区别。 两者不同之处在于调用指令 在转移前,要执行完该指令后 PC 内容自动压入堆栈,才做 addr 16( 或addr 12) 送入PC 的工作, 其中addr 16( 或addr 12) 就是子程序的首地址或子程序的入口地 址。 执行子程序中,遇到 RET 就从堆栈中将原压入堆栈的地址弹回给 PC , 继续主程序的执行。
19
第3章 AT89C51 指令系统 1) 短调用指令 ACALL指令的目标地址是 位。在调用子程序时,该指令与 指令的目标地址是11位 在调用子程序时, 指令的目标地址是 AJMP指令类似,要求调用子程序的入口地址与ACALL指令后面指 指令类似,要求调用子程序的入口地址与 指令类似 指令后面指 令的第一个字节在同一个2 页面的程序存储器区域中 页面的程序存储器区域中。 令的第一个字节在同一个 K页面的程序存储器区域中。 2) 长调用指令 LCALL指令的目标地址是 16位。可在 K程序存储器区域范 指令的目标地址是 位 可在64 程序存储器区域范 围内调用任何一个子程序。 围内调用任何一个子程序。 3) 返回指令 RET是子程序返回指令。它使CPU从子程序返回到调用指令的 是子程序返回指令。它使 是子程序返回指令 从子程序返回到调用指令的 下一条指令。 下一条指令。
其机器码均为 0A2H 07H ;将内部RAM 20H单元的最高位的值送入CY中 MOV P1.0, C ;将CY的值送入P1口的D0位
24
第3章 AT89C51 指令系统
2.位修正指令 (1) CLR C 使进位标志位内容CY清零; (2) CLR bit 使位地址单元内容清零; (3) CPL C (4) CPL bit 使进位标志位内容取反; 使位地址单元内容取反;
C3 C2 bit B3 B2 bit D3 D2 bit 82 bit B0 bit 72 bit A0 bit 40 rel 50 rel 20 bit rel 30 bit rel 10 bit rel
C←0 bit←0 C← bit←(/bit) C←1 bit←1 C←C∧(bit) C←C∧(/bit) C←C∨(bit) C←C∨(/bit) C=1, 转 C=0, 转 (bit)=1, 转 (bit)=0, 转 bit=1转bit←0
DEC A JZ LABEL2
17
第3章 AT89C51 指令系统
2) 比较转移指令 这组比较指令的功能是将目的操作数的内容和源操作数的内容进行比较。 若不相等,则程序转移到目标地址;否则,则顺序执行程序。 CJNE CJNE CJNE CJNE A, direct, rel A, #data, rel Rn, #data, rel @Ri, #data, rel; 比较转移指令
相关文档
最新文档