按钮开关的使用_第1页
按钮开关的使用_第2页
按钮开关的使用_第3页
按钮开关的使用_第4页
按钮开关的使用_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、3.3.5 位操作类指令位操作类指令 指令中位地址的表达形式有以下几种: (1) 直接地址方式: 如 0A8H; (2) 点操作符方式: 如IE.0; (3) 位名称方式: 如 EX0; (4) 用户定义名方式: 如用伪指令 BIT定义: WBZD0 BIT EX0经定义后, 允许指令中使用WBZD0 代替EX0。 1. 位数据传送指令位数据传送指令 MOV C, bit MOV bit, C 这组指令的功能是: 把源操作数指出的布尔变量送到目的操作数指定的位地址单元中。其中一个操作数必须为进位标志 Cy, 另一个操作数可以是任何可直接寻址位。 2. 位变量修改指令位变量修改指令 CLR C

2、;清零 CLR bit CPL C ;取反 CPL bit SETB C ;置位 SETB bit 这组指令对操作数所指出的位进行清“0”, 取反, 置“1”的操作, 不影响其它标志。 3. 位变量逻辑与指令位变量逻辑与指令 ANL C, bit ANL C, /bit 这组指令的功能是: 如果源位的布尔值是逻辑 0, 则将进位标志清“0”; 否则, 进位标志保持不变, 不影响其它标志。bit前的斜杠表示对(bit)取反, 直接寻址位取反后用作源操作数, 但不改变直接寻址位原来的值。例如指令: ANL C, /ACC.0 执行前ACC.0 为 0, C为 1, 则指令执行后 C为 1, 而 A

3、CC.0仍为 0。 4. 位变量逻辑或指令位变量逻辑或指令 ORL C, bit ORL C, /bit 这组指令的功能是: 如果源位的布尔值是逻辑 1, 则将进位标志置“1”; 否则, 进位标志保持不变, 不影响其它标志。 5. 位变量条件转移指令位变量条件转移指令 JC rel; 若(Cy)=1, 则转移 PC(PC)+2+rel JNC rel; 若(Cy)=0, 则转移PC(PC)+2+rel JB bit, rel; 若(bit)=1, 则转移PC(PC)+3+rel JNB bit, rel; 若(bit)=0, 则转移PC(PC)+3+rel JBC bit, rel; 若(bi

4、t)=1, 则转移PC(PC)+3+rel, 并 bit 0 3.3.4 控制转移指令控制转移指令 AT89C51提供了较丰富的控制转移指令, 因此在编程上相当灵活方便。其中有 64 KB范围内的长调用、长转移指令; 有 2KB范围内的绝对调用和绝对转移指令; 有全空间的长相对转移及一页范围内的短相对转移指令; 还有多种条件转移指令。这类指令用到的助记符共有 10 种: AJMP、LJMP、SJMP、JMP、ACALL、LCALL、JZ、JNZ、CJNE、DJNZ。 一、一、 无条件转移指令无条件转移指令 1. 短跳转指令短跳转指令 AJMP addr11 这是2KB范围内的无条件跳转指令,

5、执行该指令时, 先将PC+2, 然后将addr11送入PC10PC0, 而PC15PC11保持不变。 这样得到跳转的目的地址。需要注意的是, 目标地址与AJMP后面一条指令的第一个字节必须在同一个 2 KB区域的存储器区内。 2. 相对转移指令相对转移指令 SJMP rel 执行该指令时, 先将 PC+2, 再把指令中带符号的偏移量加到PC上, 得到跳转的目标地址送入PC。 3. 长跳转指令长跳转指令 LJMP addr16 执行该指令时, 将 16 位目标地址addr16 装入PC, 程序无条件转向指定的目标地址。转移的目标地址可以在 64 KB程序存储器地址空间的任何地方, 不影响任何标志

6、。 4. 散转指令散转指令 JMP A+DPTR 执行该指令时, 把累加器 A中的 8 位无符号数与数据指针中的 16 位数相加, 结果作为下条指令的地址送入PC, 不改变累加器 A和数据指针DPTR的内容, 也不影响标志。 利用这条指令能实现程序的散转,实现分支程序设计。 二、二、 条件转移指令条件转移指令 1、A判零指令: JZ rel; (A)= 0 转移 JNZ rel; (A)0 转移 这类指令是依据累加器A的内容是否为 0 的条件转移指令。条件满足时转移(相当于一条相对转移指令), 条件不满足时则顺序执行下面一条指令。转移的目标地址在以下一条指令的起始地址为中心的 256 个字节范

7、围之内(128 +127)。当条件满足时, PC(PC)+N+rel, 其中(PC)为该条件转移指令的第一个字节的地址, N为该转移指令的字节数(长度), 本转移指令N=2。 2、比较转移指令、比较转移指令 CJNE A, direct, relCJNE A, data, relCJNE Rn, data, relCJNE Ri, data, rel 这组指令的功能是: 比较前面两个操作数的大小, 如果它们的值不相等则转移。转移地址的计算方法与上述两条指令相同。如果第一个操作数(无符号整数)小于第二个操作数, 则进位标志Cy置“1”, 否则清“0”, 但不影响任何操作数的内容。 3、减、减 1

8、不为不为 0转移指令转移指令DJNZ Rn, relDJNZ direct, rel 这两条指令把源操作数减 1, 结果回送到源操作数中去, 如果结果不为 0 则转移(转移地址的计算方法同前)。 三、空操作指令三、空操作指令 NOP 不影响其它标志位和寄存器,用于产生一个机器周期的延时。 四、四、 调用及返回指令调用及返回指令 在程序设计中, 通常把具有一定功能的公用程序段编制成子程序, 当主程序需要使用子程序时用调用指令, 而在子程序的最后安排一条子程序返回指令,以便执行完子程序后能返回主程序继续执行。 1. 短调用指令短调用指令 ACALL addr11 这是一条 2 KB范围内的子程序调

9、用指令。执行该指令时,先将 PC+2 以获得下一条指令的地址, 然后将 16 位地址压入堆栈(PCL内容先进栈, PCH内容后进栈), SP内容加 2, 最后把 PC的高 5 位PC15PC11与指令中提供的 11 位地址addr11相连接(PC15PC11, 100), 形成子程序的入口地址送入PC, 使程序转向子程序执行。所用的子程序的入口地址必须与 ACALL下面一条指令的第一个字节在同一个 2 KB区域的存储器区内。 2. 长调用指令长调用指令 LCALL addr16 这条指令无条件调用位于 16 位地址addr16的子程序。执行该指令时,先将PC+3以获得下一条指令的首地址, 并把它压入堆栈(先低字节后高字节), SP内容加 2, 然后将 16 位地址放入 PC中, 转去执行以该地址为入口的程序。 LCALL指令可以调用 64 KB范围内任何地方的子程序。指令执行后不影响任何标志。 3. 子程序返回指令子程序返回指令 RET 这条指令的功能是: 恢复断点, 将调用子程序时压入堆栈的下一条指令的首地址取出送入PC, 使程序返回主程序继续执行。 4. 中断返回指令中断返回指令 RETI 这条指令的功能与RET指令相似, 不同的是它还要清除MCS -

温馨提示

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

评论

0/150

提交评论