51单片机之位操作指令SETB、CPL等
文章目录
- 前言
- 一、位数据传送指令
- MOV C, bit
- MOV bit, C
- 二、位修正指令
- CLR X
- SETB X
- CPL X
- 三、位逻辑运算指令
- ANL C, X
- ORL C, X
前言
- 位操作指令只能对片内RAM可位寻址的空间进行操作;
- 在片内RAM 字节地址 20H~2FH共计16字节128位,其对应 位地址00H~70H的128位空间地址;
- 此外特殊功能寄存器(SFR)中有11个可以位寻址共计88位(准确说需要再去除6位,共计82位);
- 对于判定SFR是否可以寻址,可利用其字节地址的十进制表达是8的倍数,或者字节地址的十六进制以0或8结尾的特性来判断其可以位寻址;
- 通过指令来判断源操作数与目的操作数是位地址还是字节地址;
- 位操作指令可以操作位地址或字节地址,但位地址只能通过位操作指令来操作,其他指令是控制1B(一个字节),不适合位地址,只有位操作指令是操作1b(一位);
- 51单片机是利用布尔处理机来处理位变量的指令集;
- 位操作指令的定义:处理对象为位变量的指令集,包括变量传送、逻辑运算、控制程序转移等指令。
例 设位地址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等
注 :将位条件转移指令放入条件转移指令中;
由本人水平有限,文章难免有错误,望告知
51单片机之位操作指令SETB、CPL等相关推荐
- 传统 51 与STC-Y5内核 51 单片机对比汇编指令
传统 51 与STC-Y5内核 51 单片机对比&汇编指令 算术类指令 24 汇编助记符 功能说明 字节数 传统8051单片机所需时钟 STC 8051单片机所需时钟 ADD A,Rn 寄存器 ...
- 单片机c语言reti的用法,基于51单片机中断跳出指令“RETI”浅议
原标题:基于51单片机中断跳出指令"RETI"浅议 =RET指令+通知CPU中断服务已结束. 最近在基于编程的过程中出现了个很奇怪的问题"程序执行中在寄存器EA=1,ET ...
- 51单片机系列——基础指令
这学期开始学习51单片机,感觉比汇编简单,关键是51的汇编有一个好的ide,练习起来也比较方便,这个系列主要记录51的学习经验.下面是基础指令的练习: org 0000h ljmp main ...
- 单片机c语言reti的用法,谈谈51单片机的RETI指令
最近在基于51单片机编程的过程中出现了个很奇怪的问题"程序执行中在寄存器EA=1,ET0=1,TR0=1条件下,单TF0=1时并没有执行中断". 在有过单片机中断编程经历者都知道当 ...
- 单片机c语言有没有跳转指令,51单片机跳转指令
@ 无条件转移bai指令(共4条) LJMP addr16 : PC〈-du- addr16 AJMP addr11 : PC〈-- PC+2 , PC10-0〈-- addr11 SJMP rel ...
- jnz和djnz_51单片机之系统指令
文章目录 前言 数据传送指令 MOV MOVC MOVX XCH XCHD PUSH POP 运算符指令 ADD ADDC SUBB MUL DIV DA INC DEC 逻辑运算指令 ANL ORL ...
- 51单片机之算术运算指令ADDC、SUBB等
文章目录 前言 一.加法指令 ADD ADD A, XXX 二.带进位加法指令 ADDC ADDC A, XXX 三.带借位减法指令 SUBB SUBB A, XXX 四.乘除法指令 MUL AB D ...
- 51单片机汇编指令记忆方法
虽然现在51单片机一般是用的C语言编程,但是记得当时大学教材还是教的汇编. 本文总结下51单片机的汇编指令,权当是参考,感兴趣的可以了解一下. 学习单片机,除了搞清单片机内部功能.存储空间分配及I/O ...
- 51单片机开发系列一-51单片机开发环境搭建以及入门汇编代码
51单片机开发系列一 51单片机开发环境搭建以及入门汇编代码 象棋小子 1048272975 1. 51单片机概述 51单片机是对所有兼容Intel 8031指令系统的单片机的统称.目前教科书基 ...
最新文章
- 一款基jquery超炫的动画导航菜单
- 怎样才能提高搜索引擎对网站的信任度?
- 用到的oracle sql语句-001
- Reference和ReferenceQueue
- Java记录 -6- 流程控制语句
- 6-23 分离链接法的删除操作函数 (20 分)
- axios (get post请求、头部参数添加)傻瓜式入门axios
- 分离整数的各个数(信息学奥赛一本通-T1088)
- 30号晚直播丨数据操作加速器,CloudQuery v1.3.5 发布!
- 超越Mask-RCNN:谷歌大脑的AI,自己写了个目标检测AI
- 解决办法:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
- visio双线方框怎么画_visio透明框怎么画? visio绘制方框透明的教程
- 全网最全-固定资本存量分省、市、地区、产业-含计算过程
- ANSYS ICEM CFD 网格划分步骤简要总结
- Android影院选座
- 电脑ps计算机磨皮,ps脸部磨皮教程
- Jsoncpp 使用说明
- java equal_Java equal() 和 == 详细分析
- iOS应用性能调优的建议和技巧--中高级--王朋
- Windows脚本 同网段ip检测与持续ping包测试