mcs51
单片机位操作指令及编程举例
MCS-51
单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有
一套位变量处理的指令集。在进行位处理时,
CY
(就是我们前面讲的进位位)
称位累加器。有自已的位
RAM
,也就是我们刚讲的内部
RAM
的
20H-2FH
这
16
个字节单元即
128
个位单元,还有自已的位
I/O
空间(即
P0.0..P0.7,P1.0.P1.7,P2.0..P2.7,P3.0..P3.7
)。当然在物理实体上它们与原来的以
字节寻址用的
RAM
,及端口是完全相同的,或者说这些
RAM
及端口都能有两
种使用办法。(
1
)位传送指令
MOVC
,
BITMOVBIT
,
C
这组指令的功能是实
现位累加器(
CY
)和其它位地址之间的数据传递。例:
MOV
P1.0,CY
;
将
CY
中的状态送到
P1.0
管脚上去(如果是做算术运算,我们就能通过观察知道现在
CY
是多少啦)。
MOV
P1.0,CY
;
将
P1.0
的状态送给
CY
。
(
2
)位修正指令位清
0
指令
CLR
C
;
使
CY=0CLR
bit
;
使指令的位地址等于
0
。例:
CLR
P1.0
;
即使
P1.0
变为
0
位置
1
指令
SETBC;
使
CY=1SETBbit;
使指定的位地址等于
1
。例:
SETBP1.0;
使
P.0
变为
1
位取反指令
CPLC;
使
CY
等于原来的相反的值,由
1
变为
0
,由
0
变为
1
。
CPL
bit
;
使指定的位的值等于原来相反的值,由
0
变为
1
,由
1
变为
0
。例:
CPLP1.0
以我们做过的实验为例,如果原来灯是亮的,则
执行本指令后灯灭,反之原来灯是灭的,执行本指令后灯亮。(
3
)位逻辑运算
指令位与指令
ANL
C,bit
;CY
与指定的位地址的值相与,结果送回
CYANL
C,/bit
;
先将指定的位地址中的值取出后取反,再和
CY
相与,结果送回
CY
,但
注意,指定的位地址中的值本身并不发生变化。例:
ANL
C,/P1.0
设执行本指
令前,
CY=1
,
P1.0
等于
1
(灯灭),则执行完本指令后
CY=0
,而
P1.0
也是等
于
1
。可用下列程序验证:
ORG
0000HAJMP
STARTORG
30HSTART
:
MOV
SP
,
#5FHMOVP1
,
#0FFHSETBCANLC
,
/P1.0MOVP1.1,C;
将做完的结果送