位及位操作指令

合集下载

51单片机位操作指令

51单片机位操作指令

51单片机位操作指令摘要:1.51 单片机简介2.位操作指令概述3.常见位操作指令a.位清零指令b.位置位指令c.位取反指令d.位测试指令4.位操作指令应用实例a.简单按键控制b.计数器应用c.矩阵键盘扫描5.位操作指令在51 单片机中的重要性正文:51 单片机是一种广泛应用的8 位微控制器,其功能强大且成本低廉,被广泛应用于嵌入式系统和自动控制领域。

在51 单片机的指令系统中,位操作指令占据着重要地位,它们可以实现对单片机内部寄存器和外设状态的快速操作。

位操作指令主要针对单个二进制位进行操作,包括位清零指令、位置位指令、位取反指令和位测试指令等。

这些指令可以实现对二进制数据的设置、检测和修改等功能,为实际应用提供了极大的便利。

位清零指令(如CLR)用于将指定寄存器的某一位设置为0。

例如,我们可以使用CLR P1.0 来将P1 寄存器的第0 位清零。

位置位指令(如SETB)则用于将指定寄存器的某一位设置为1。

例如,我们可以使用SETB P1.0 来将P1 寄存器的第0 位设置为1。

位取反指令(如CPL)用于将指定寄存器的某一位取反,即0 变1,1 变0。

例如,我们可以使用CPL P1.0 来将P1 寄存器的第0 位取反。

位测试指令(如JC、JNC、JB、JNB 等)用于根据指定寄存器的某一位的值来决定程序的执行流程。

例如,我们可以使用JC P1.0 来检查P1 寄存器的第0 位是否为1,若为1 则跳转到指定地址执行程序。

位操作指令在实际应用中有着广泛的应用。

例如,我们可以使用位清零指令和位置位指令来实现简单按键的控制,根据按键的状态来控制LED 灯的点亮和熄灭。

又如,我们可以使用位操作指令来实现计数器功能,通过位清零指令和位测试指令来计数和判断计数器是否达到预定值。

此外,位操作指令还可以应用于矩阵键盘扫描,通过位操作指令来检测并识别按键的按下。

总之,位操作指令在51 单片机中具有举足轻重的地位,掌握这些指令的使用方法对于进行51 单片机编程至关重要。

单片机指令大全(二)2024

单片机指令大全(二)2024

单片机指令大全(二)引言概述:本文是关于单片机指令大全的第二部分。

在上一部分中,我们介绍了一些常用的单片机指令和其功能。

本文将继续介绍更多的单片机指令,包括数据传输、逻辑运算、算术运算、位操作以及状态寄存器等方面的指令。

这些指令将帮助您更好地理解和使用单片机。

1. 数据传输指令1.1. MOV指令:将一个数据从源操作数传送到目的操作数。

1.2. LDI指令:将一个立即数传送到一个寄存器。

1.3. LDS和STS指令:将数据从SRAM传送到寄存器或将寄存器的数据传送到SRAM。

1.4. IN和OUT指令:将数据从端口传送到寄存器或从寄存器传送到端口。

2. 逻辑运算指令2.1. AND、OR和XOR指令:进行逻辑与、逻辑或和逻辑异或运算。

2.2. NOT指令:对一个寄存器的数据进行逻辑非运算。

2.3. CLR指令:将一个寄存器的数据清零。

3. 算术运算指令3.1. ADD和SUB指令:对两个操作数进行加法或减法运算。

3.2. INC和DEC指令:对一个寄存器的数据进行加1或减1操作。

3.3. MUL和DIV指令:进行乘法和除法运算。

4. 位操作指令4.1. ANDI、ORI和XORI指令:对一个寄存器的数据进行与、或和异或运算。

4.2. SBI和CBI指令:设置或清除一个I/O端口的某个位。

4.3. SBIC和SBIS指令:跳转指令,根据指定的I/O端口位是否被设置或清除执行跳转操作。

5. 状态寄存器相关指令5.1. SEI和CLI指令:设置或清除全局中断。

5.2. SREG指令:用于保存和恢复状态寄存器的值。

5.3. IJMP和EIJMP指令:用于从程序中直接跳转到任意存储器位置。

总结:本文介绍了单片机指令大全的第二部分内容,包括数据传输、逻辑运算、算术运算、位操作以及状态寄存器等方面的指令。

这些指令的功能与用法将有助于您更好地理解和应用单片机。

通过熟练掌握这些指令,您将能够更加灵活地进行单片机程序的设计与开发。

位操作指令

位操作指令

位操作指令
位操作指令
 MCS-51单片机的特色之一是具有很强的位处理功能。

位操作指令又称为布尔指令,其功能是对内部RAM中可进行位操作的区域进行位操作。

 在进行位操作时,位累加器C即进位标志Cy,位地址是片内RAM字节地址20H~2FH单元中连续的128个位(位地址00H~7FH)和部分功能寄存器。

凡SFR中字符等地址能被8整除的特殊功能寄存器都具有可寻址的位地址,其中ACC(位地址E0H~E7H),B(位地址F0H~F7H)和片内RAM 中128个位都可作软件标志或存储位变量。

 1. 位数据传送类指令(2条)
 MOV C , bit ;(bit) →C,寻址位的状态送入C
 MOV bit , C ;C→(bit),C的状态送入位地址中
 2. 位修正指令(6条)
 CLR C ;0→C,清0累加器
 CLR bit ;0→(bit);清0寻址位。

PLC的基本指令

PLC的基本指令

PLC的基本指令一、位操作类指令位操作类指令依靠两个数字1和0进行工作,这两个数字组成了二进制系统,数字1和0称之为二进制数或简称位。

在触点与线圈中,1表示启动或通电,0表示启动或未通电。

1.标准触点指令梯形图表示:语句表表示:“LD bit ”;“LDN bit”。

Bit触点的范围:V、I 、Q、M、SM、T、C、S、L(位)。

功能及说明常开触点在其线圈不带电时,触点是断开的,触点的状态为Off或为0。

当线圈带电时,其触点是闭合的,触点的状态为ON或为1。

该指令用于网络块逻辑运算开始的常开触点与母线的连接。

常闭触点在其线圈不带电时,触点是闭合的,触点的状态为ON或为1。

当线圈带电时,其触点是断开的,触点的状态为OFF或为0。

该指令用于网络块逻辑运算开始的常闭触点与母线的连接。

2.立即触点指令梯形图表示:语句表表示:“LDI bit ”;“LDNI bit”。

Bit触点的范围:I(位)。

功能及说明当常开立即触点位值为1时,表示该触点闭合。

当常闭立即触点位值为0时,表示该触点断开。

指令中的“I”表示立即的意思。

执行立即指令时,CPU直接读取其物理输入点的值,而不是更新映像寄存器。

在程序执行过程中,立即触点起开关的触点作用。

3.输出操作指令(线圈驱动指令)梯形图表示:语句表表示:“=bit ”Bit触点的范围:V、I 、Q、M、SM、T、C、S、L(位)。

功能及说明输出操作是把前面各逻辑运算的结果复制到输出线圈,从而使输出线圈驱动的输出常开触点闭合,常闭触点断开。

输出操作时,CPU是通过输入/输出映像区来读/写输出操作的。

4.立即输出操作指令梯形图表示:语句表表示:“=I bit ”Bit的范围:Q(位)。

功能及说明立即输出操作是把前面各逻辑运算的结果复制到输出线圈,从而使立即输出线圈驱动的输出常开触点闭合,常闭触点断开。

当立即输出操作时,CPU立即输出。

除将结果写到输出映像区外直接驱动实际输出。

5.逻辑与、或操作指令梯形图表示:逻辑与操作由标准触点或立即触点串联构成;逻辑或操作由标准触点或立即触点的并联构成。

位操作类指令

位操作类指令

CY←(CY)∧(bit) CY←(CY)∧(/bit ) CY←(CY)∨(bit) CY←(CY)∨(/bit)
CY←(/CY) bit ←(/bit)
标志位
解释
P OAC VCY
× × × √ CY和指定位的与,结果存入CY
× × × √ 指定位求反后和CY与,结果存入CY
× × × √ CY和指定位的或,结果存入CY
× × × × 若(CY)=0转移,PC←(PC)+2+rel,否则程序顺序执行,PC← (PC)+2
× × × × 若(bit)=1转移,PC←(PC)+3+rel,否则程序顺序执行,PC← (PC)+3
× × × × 若(bit)=0转移,PC←(PC)+3+rel,否则程序顺序执行,PC← (PC)+3
× × × × 若(bit)=1转移,PC←(PC)+3+rel,并清零该位,即bit=0;否则程 序顺序执行,PC←(PC)+3
【例】:完成(Z)=(X)⊕(Y)异或运算,其中:X、Y、Z表示位地址。
解:异或运算可表示为(Z)=(X)(/Y)+(/X )(Y),参考程序如下:
MOV C,X
;CY←(X)
2.置位复位指令(4条)
指令
功能
CLR C CLR bit SETB C SETB bit
CY←0 bit←0 CY←1 bit←1
标志位
解释
P OAC VCY
× × × √ 清CY × × × × 清位 × × × √ 置位CY × × × × 置位
3.位运算指令(6条)
指令
功能
ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit CPL C CPL bit

单片机位操作指令

单片机位操作指令

单片机位操作指令
单片机位操作指令是在单片机编程中常用的一种操作方式,通过对某一位进行操作来实现对寄存器或变量的位级操作。

在单片机中,每个寄存器或变量都是由多个位(bit)组成的。

位操作指令允许我们对某一位进行读、写或修改操作,而不必对整个寄存器或变量进行操作,从而提高了程序的执行效率和节省了存储空间。

位操作指令可以分为位设置、位清零、位读取和位翻转四种操作。

1. 位设置:通过将某一位设置为1来实现位的置位操作。

例如,可以使用“OR”操作符将某一位与1进行“或”操作后赋值给原来的变量,即可将该位设置为1。

2. 位清零:通过将某一位设置为0来实现位的清零操作。

例如,可以使用“AND”操作符将某一位与0进行“与”操作后赋值给原来的变量,即可将该位清零。

3. 位读取:通过读取某一位的值来实现位的读取操作。

例如,可以使用“AND”操作符将某一位与1进行“与”操作后判断结果是否为1,即可读取该位的值。

4. 位翻转:通过将某一位的值取反来实现位的翻转操作。

例如,可
以使用“XOR”操作符将某一位与1进行“异或”操作后赋值给原来
的变量,即可将该位的值翻转。

位操作指令在单片机编程中应用广泛,可以用来控制外设的开关状态、读取传感器的信号、实现位级的逻辑运算等。

在一些对性能和存储空间要求较高的应用中,合理地运用位操作指令可以提高程序的效率和优化系统的设计。

需要注意的是,在使用位操作指令时,应注意对位操作的顺序和操作的原子性。

由于位操作指令是直接对寄存器或变量的位进行操作,因此在多线程或中断处理的场景中,需要确保对同一寄存器或变量的位操作是原子操作,以避免出现不可预期的结果。

单片机控制流水灯—位操作指令

单片机控制流水灯—位操作指令

2 知识准备
四、取反指令
C语言中取反运算符是“~” ,用来对一个二进制整数按位取反,即将0变1,将1变0。
1.“~”运算符可以对整型常量直接操作,比如: int a=~0;则a的值为1。
2.“~”运算符也可以操作变量 unsigned char a=0xaa; unsigned char b=~a; 则b=~a=0x55; 因为“~”运算是一元运算符,所以没有复合赋值运算。
2 知识准备
三、循环位移
_crol_, _cror_指令:将char型变量循环向左(右)移动指定位数后返回,区别 于一般移位的是移位时没有数位的丢失。循环左移时,用从左边移出的位填 充字的右端,而循环右移时,用从右边移出的位填充字的左侧。这种情况在 系统程序中时有使用,在一些控制程序中用得也不少。
3 搭建硬件电路
1.关闭单片机开发板电源开关; 2.单片机P1.0~P1.7端口对应连 接VD31~VD24。
4
编写程序
{ unsigned char a, t;
//定义无符号字符型变
#include< reg51.h >

void delay(unsigned int ys) P1=0xff;
8
课后任务
•复习位操作指令,理解其含义及用法。
单片机技术及应用
}
}产生Hex二进制文件,下载到STC89C58芯片中,验证流水灯程序功能。
6
成果展示及评价
•学生进行作品展示
6
成果展示及评价
评价内容 1.安全用电
自评
小组评价 教师评价
优☆ 良△ 中√ 差×
职业素养
2.设备及器材的安全 3.记录整理完整准确
•学生进41..符流行合水6灯作S管工理品作理原展念理 示

03.9 第三章 - 单片机指令系统(位操作指令MOV、SETB、CLR、CPL、ANL、ORL)

03.9 第三章 - 单片机指令系统(位操作指令MOV、SETB、CLR、CPL、ANL、ORL)

;A = 59H = 0101 1001B ;P1 = A = 0101 1001B ;C = 1 ;ACC.1 = 1 ;P1.3 = 0 ;P1.6 = 0 ;P1.2 = 1 ;(20H)= P1 = 0001 0101B ;(30H)= A = 0101 1011B
09:43
单片机技术
8
3.9.2 位控制指令(SETB、CLR、CPL)
;P1.0 = 1 ;ACC.3 = 0 ;C = 1 ;C = 1 ;C = 1 ;P3.4 = 1
09:43
单片机技术
14
3.9.3 位条件转移指令(JC、JB、JBC)
❖ 1.判C转移指令ຫໍສະໝຸດ JC、JNC)JC rel
;先PC←PC+2;若(Cy)= 1时转移,且PC'
=PC+rel,否则顺序执行
CPL bit ;(bit)= (/bit)
▪ 功能:将Cy或bit取反。
09:43
单片机技术
9
3.9.2 位控制指令(SETB、CLR、CPL)
❖ 课堂练习
▪ 执行以下指令?
SETB P1.0 CLR 20H CLR PSW.2 CPL PSW.2 CLR RS0 SETB RS1
;P1.0 = 1 ;20H = 0 ;PSW.2 = 0 ;PSW.2 = 1 ;RS0 = 0 ;RS1 = 1
❖ 1.位置1指令(SETB)
▪ 格式:SETB C ;(Cy) = 1
SETB bit ;(bit)= 1
▪ 功能:将Cy或bit置1。
❖ 2.位置0指令(CLR)
▪ 格式:CLR C ;(Cy) = 0
CLR bit ;(bit)= 0
▪ 功能:将Cy或bit置0。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

位及位操作指令
通过前面那些流水灯的例子,我们已经习惯了“位”一位就是一盏灯的亮和灭,而我们学的指令却全都是用“字节”来介绍的:字节的移动、加法、减法、逻辑运算、移位等等。

用字节来处理一些数学问题,比如说:控制冰箱的温度、电视的音量等等很直观,可以直接用数值来表在。

可是如果用它来控制一些开关的打开和合上,灯的亮和灭,就有些不直接了,记得我们上次课上的流水灯的例子吗?
我们知道送往P1口的数值后并不能马上知道哪个灯亮和来灭,而是要化成二进
制才知道。

工业中有很多场合需要处理这类开关输出,继电器吸合,用字节来处
理就显示有些麻烦,所以在8031单片机中特意引入一个位处理机制。

1.位寻址区
在8031中,有一部份RAM和一部份SFR是具有位寻址功能的,也就是说这些RAM的每一个位都有自已的地址,可以直接用这个地址来对此进行操作。

图1
内部RAM的20H-2FH这16个字节,就是8031的位寻址区。

看图1。

可见这里面的每一个RAM中的每个位我们都可能直接用位地址来找到它们,而不必用字节地址,然后再用逻辑指令的方式。

2.可以位寻址的特殊功能寄存器
8031中有一些SFR是可以进行位寻址的,这些SFR的特点是其字节地址均可被8整除,如A累加器,B寄存器、PSW、IP(中断优先级控制寄存器)、IE(中断允许控制寄存器)、SCON(串行口控制寄存器)、TCON (定时器/计数器控制寄存器)、P0-P3(I/O端口锁存器)。

以上的一些SFR我们还不熟,等我们讲解相关内容时再作详细解释。

3.位操作指令
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.位传送指令
MOV C,BIT
MOV BIT,C
这组指令的功能是实现位累加器(CY)和其它位地址之间的数据传递。

例:MOV P1.0,CY;将CY中的状态送到P1.0引脚上去(如果是做算术运算,我们就可以通过观察知道现在CY是多少啦)。

MOV P1.0,CY;将P1.0的状态送给CY。

2.位修正指令
1.位清0指令
CLR C;使CY=0
CLR bit ;使指令的位地址等于0。

例:CLR P1.0 ;即使P1.0变为0
2.位置1指令
SETB C ;使CY=1
SETB bit ;使指定的位地址等于1。

例:SETB P1.0 ;使P.0变为1
3.位取反指令
CPL C ;使CY等于原来的相反的值,由1变为0,由0变为1。

CPL bit ;使指定的位的值等于原来相反的值,由0变为1,由1变为0。

例:CPL P1.0
以我们做过的实验为例,如果原来灯是亮的,则执行本指令后灯灭,反之原来灯是灭的,执行本指令后灯亮。

1.位逻辑运算指令
1.位与指令
ANL C,bit ;CY与指定的位地址的值相与,结果送回CY
ANL C,/bit ;先将指定的位地址中的值取出后取反,再和CY相与,结果送回CY,但注意,指定的位地址中的值本身并不发生变化。

例:ANL C,/P1.0
设执行本指令前,CY=1,P1.0等于1(灯灭),则执行完本指令后CY=0,而P1.0也是等于1。

可用下列程序验证:
ORG 0000H
AJMP START
ORG 30H
START:MOV SP,#5FH
MOV P1,#0FFH
SETB C
ANL C,/P1.0
MOV P1.1,C ;将做完的结果送P1.1,结果应当是P1.1上的灯亮,而P1.0上的灯还是不亮。

2.位或指令
ORL C,bit
ORL C,/bit
这个的功能大家自行分析吧,然后对照上面的例程,编一个验证程序,看看你相得对吗?
1.位条件转移指令
1.判CY转移指令
JC rel
JNC rel
第一条指令的功能是如果CY等于1就转移,如果不等于1就顺序执行。

那么转移到什么地方去呢?我们可以这样理解:JC 标号,如果等于1就转到标号处执行。

这条指令我们在上节课中已讲到,不再重复。

第二条指令则和第一条指令相反,即如果CY=0就转移,不等于0就顺序执行,当然,我们也同样理解:JNC 标号
2.判位变量转移指令
JB bit,rel
JNB bit,rel
第一条指令是如果指定的bit位中的值是1,则转移,否则顺序执行。

同样,我们可以这样理解这条指令:JB bit,标号
第二条指令请大家先自行分析
下面我们举个例子说明:
ORG 0000H
LJMP START
ORG 30H
START:MOV SP,#5FH
MOV P1,#0FFH
MOV P3,#0FFH
L1:JNB P3.2,L2;P3.2上接有一只按键,它按下时,P3.2=0
JNB P3.3,L3 ;P3.3上接有一只按键,它按下时,P3.3=0
LJM P L1
L2: MOV P1,#00H
LJMP L1
L3: MOV P1,#0FFH
LJMP L1
END
把上面的例子写入片子,看看有什么现象………
.
.
按下接在P3.2上的按键,P1口的灯全亮了,松开或再按,灯并不熄灭,然后按下接在P3.3上的按键,灯就全灭了。

这像什么?这不就是工业现场经常用到的“启动”、“停止”的功能吗?
怎么做到的呢?一开始,将0FFH送入P3口,这样,P3的所有引线都处于高电平,然后执行L1,如果P3.2是高电平(键没有按下),则顺序执行JNB P3.3,L3语句,同样,如果P3.3是高电平(键没有按下),则顺序执行LJMP L1语句。

这样就不停地检测P3.2、P3.3,如果有一次P3.2上的按键按下去了,则转移到L2,执行MOV P1,#00H,使灯全亮,然后又转去L1,再次循环,直到检测到P3.3为0,则转L3,执行MOV P1,#0FFH,例灯全灭,再转去L1,如此循环不已。

大家能否稍加改动,将本程序用JB指令改写?。

相关文档
最新文档