51单片机位操作指令
JC:如果Cy为1,则跳转到目标地址,否则执 行下一条指令 JNC:如果Cy为0,则跳转到目标地址,否则 执行下一条指令 JB:如果bit为1,则跳转到目标地址,否则执 行下一条指令 JNB:如果Cy为0,则跳转到目标地址,否则 执行下一条指令 JBC:如果bit为1,则先将bit清零,再跳转到 目标地址,否则执行下一条指令
位变量逻辑运算指令
ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit
C都是在前面的!
ANL:可寻址位和Cy执行“逻辑与”操作,结果 存放在Cy,不影响可寻址位
ORL:可寻址位和Cy执行“逻辑或”操作,结果 存放在Cy,不影响可寻址位
前面加一个“/”表示使用反码与Cy执行逻辑操 作,仍不影响可寻址位
• 可见20H是位地址还是字节地址要看另一个操 作数的类型。
分类:
1.位传送指令 2.位变量修改指令 3.位变量逻辑运算指令 4.位条件相对转移指令
位传送指令
MOV C,bit MOV bit,C
注意:这里的bit都是位地址
这组指令的功能是实现位累加器(CY)和其它位 地址之间的数据传递。
例: MOV C,30H ;位地址(30H)→ Cy
位操作指令
主讲人:王大臣
一位就是一盏灯的亮和灭
• 我们之前学的指令全都是用“字节”来介 绍的:字节的移动、加法、减法、逻辑运算、 移位等等。用字节来处理一些数学问题,比如 说:控制冰箱的温度、电视的音量等等很直观, 可以直接用数值来表示。可是如果用它来控制 一些开关的打开和合上,灯的亮和灭,就有些 不直接了?我们知道送往P1口的数值后并不能 马上知道哪个灯亮和来灭,而是要化成二进制 才知道。工业中有很多场合需要处理这类开关 输出,继电器吸合,用字节来处理就显示有些 麻烦,所以在8051单片机中特意引入一个位处 理机制。
位变量修改指令
CLR C SETB C CPL C CLR bit SETB bit CPL bit
;Cy清零操作,0→(Cy) ;Cy置位操作,1→(Cy) ; Cy取反操作,not(Cy)→(Cy) ;直接位寻址位bit清零操作,0→(bit) ;直接位寻址位bit置位操作,1→(bit) ;直接位寻址位bit取反操作,not(bit)→(bit)
举个例子:
ANL C,/P1.0 设执行本指令前,CY=1,P1.0=1,则执行完 本指令后CY=0,而P1.0也是等于1 再举个例子:
ORL C,P1.0 设执行本指令前,CY=1,P1.0=1,则执行完 本指令后CY=1,而P1.0也是等于1
位条件相对转移指令
JC rel JNC rel JB bit,rel JNB bit,rel JBC bit,rel
பைடு நூலகம்
位地址和字节地址
• 51单片机的20H-2FH为位地址区,共16个字节, 每字节有8位共128位,每位有个编号称为位地 址,位地址的范围为00H-7FH。
• 该区既可位寻址又可字节寻址。例如:MOV C,20H 这里C是进位标志位,该指令将位地址 为20H的单元内容送至C;而MOV A,20H 将字 节地址为20H的内容送至累加器A。