51单片机之位操作指令SETB、CPL等


前言

  1. 位操作指令只能对片内RAM可位寻址的空间进行操作;
  2. 在片内RAM 字节地址 20H~2FH共计16字节128位,其对应 位地址00H~70H的128位空间地址;
  3. 此外特殊功能寄存器(SFR)中有11个可以位寻址共计88位(准确说需要再去除6位,共计82位);
  4. 对于判定SFR是否可以寻址,可利用其字节地址的十进制表达是8的倍数,或者字节地址的十六进制以0或8结尾的特性来判断其可以位寻址;
  5. 通过指令来判断源操作数与目的操作数是位地址还是字节地址
  6. 位操作指令可以操作位地址或字节地址,但位地址只能通过位操作指令来操作,其他指令是控制1B(一个字节),不适合位地址,只有位操作指令是操作1b(一位);
  7. 51单片机是利用布尔处理机来处理位变量的指令集;
  8. 位操作指令的定义:处理对象为位变量的指令集,包括变量传送、逻辑运算、控制程序转移等指令。

例 设位地址10H(即字节地址22H的第一位)内容为0
MOV C 10H
SETB 20H
MOV 20H, #FFH

  • MOV C 10H和SETB 20H两个都是位操作,MOV 20H, #FFH不是位操作指令;
  • MOV C 10H:表示将(10H) = 0送入CY(进位标志位);
  • SETB 20H:表示将位地址20H(即字节地址24H的第一位)置1;
  • MOV 20H, #FFH:表示将字节地址20H设置为FFH,即位地址00H~07H共8b全设置为1,8个1。

一、位数据传送指令

MOV英文全称: Move


MOV C, bit

目的:将位地址bit的内容送入CY位中

MOV bit, C

目的:将位CY的内容送入位地址bit中

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
MOV C, bit (bit) -> C × × × 2 1
MOV bit, C (C) -> bit × × × × 2 2

例 设位地址10H的内容为0,C中的内容为1

  • MOV C, 10H:表示 位地址10H的内容送入C中,(10H) = 0 -> C,C清零;
  • MOV 10H, C:表示将C中内容送入位地址10H中,© = 1 -> 10H。

二、位修正指令

CLR英文全称:Clear
SETB英文全称:Set Bit
CPL英文全称:Complement


CLR X

目的:对位进行清零

SETB X

目的:对位进行置一

CPL X

目的:对位进行取反,原先是1就变为0,原先是0就变为1

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
CLR C 0 -> C × × × 1 1
CLR bit 0 -> bit × × × 2 1
SETB C 1 -> C × × × 1 1
SETB bit 1 -> bit × × × 2
CPL C /(C) -> C × × × 1 1
CPL bit /(bit) -> bit × × × 2 1

例 设位地址10H的内容为1,C中的内容为1

  • CLR C:表示将C清零;
  • CLR 10H:表示将位地址10H清零:
  • SETB C:表示将C置数(置一);
  • SETB 10H:表示将位地址10H置数;
  • CPL C:表示将C取反,/( C ) = 0 -> C;
  • CPL 10H:表示将位地址10H取反,/(10H) = 0 -> 10H
    SETB bit命令常用于开中断和启动定时器/计数器,如SETB ET0表示启动定时器/计数器T0

三、位逻辑运算指令

ANL英文全称:AND Logic
ORL英文全称:OR Logic


ANL C, X

目的:将累加器A中的内容与直接地址中的内容进行逻辑与运算

ORL C, X

目的:将累加器A中的内容与直接地址中的内容进行逻辑或运算

直接位地址中的数,在指令执行前后没有发送变化

助记符 功能 对标志位影响 字节数 周期数
P OV AC CY
ANL C, bit (C) ^ /(bit) -> C × × × 1 2
ANL C, /bit (C) ^ (bit) -> C × × × 2 2
ORL C, bit (C) V (bit) -> C × × × 1 2
ORL C, /bit (C) V /(bit) -> C × × × 2 2

例 设位地址10H的内容为0,C中的内容为1

  • ANL C, 10H:表示位将C中的内容与10H中的内容进行与逻辑操作,最后将结果1存放在C中;
  • ANL C, /10H:表示位将C中的内容与10H中的内容取反后进行与逻辑操作,最后将结果0存放在C中;

例 设位地址10H的内容为0,C中的内容为0

  • ORL C, 10H:表示位将C中的内容与10H中的内容进行或逻辑操作,最后将结果存0放在C中;
  • ORL C, /10H:表示位将C中的内容与10H中的内容取反后进行或逻辑操作,最后将结果存1放在C中;

51单片机之系统指令

51单片机之逻辑运算指令ANL、ORL、XRL等

51单片机之数据转移指令MOV、MOVX、MOVC等

51单片机之控制转移指令SJMP、LJMP等

51单片机之算术运算指令ADDC、SUBB等


:将位条件转移指令放入条件转移指令中;

由本人水平有限,文章难免有错误,望告知

发布了20 篇原创文章 · 获赞 26 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/jianming21/article/details/90552593