定义

单片机首先将欲修改的寄存器的内容读回ALU,对相应位进行修改,然后再整个写回原来的寄存器地址,完成该功能的指令就叫做“读-改-写”指令。

读锁存器和读引脚的区别

在51单片机中“读-修改-写”是单片机内部自己执行的,它发生在写IO口的时候,当写IO口的时候它先把IO的当前状态读回来,根据要写的数据修改读回来的数据,再写到IO口;读引脚是直接读引脚的当前状态,当前引脚是高电平,读回来的就是高电平,低电平时读回来的就是低电平

读的两种方式

在对并行口P0~P3操作时,这类指令从端口的锁存器读出数据而不是引脚处。
而MOV等非“读-改-写”指令,则是从端口的引脚处读数据。

单片机从端口读入数据的通道有两个,一个是从锁存器引入,一个是从输出引脚处引入,分别叫做“读锁存器”和“读引脚”。单片机在进行端口输出时,经常要参考其上一次的输出状态。
例如,需要将连接到端口的LED闪烁。编程序时往往需要从输出引脚读前一次的输出状态,将其求反后输出。但如果上次是输出“1”使LED点亮,这时候虽然端口上输出逻辑是“1”,但是由于LED的二极管作用将输出高电平拉至“0”电平(0.7V左右),通过引脚读进来就是“0”而非“1”了。这样,将“0”求反后输出还是“1”,就起不到使灯闪烁的目的了。但是,如果这时读的不是端口而是锁存器的输出端Q,则实现闪烁的功能就正常。上述例子很好地说明了为什么单片机在设置读端口功能后还要设置读锁存器这一功能。

读引脚由传送指令MOV实现
读锁存器用到的“读-改-写”指令用 ANL P0,A等实现

MCS-51单片机指令系统“读-改-写”指令相关推荐

  1. c51语言定义布尔变量,51单片机指令系统:布尔变量操作指令(9)

    51单片机指令系统:布尔变量操作指令(9) 第二十七课:布尔变量操作指令分析 布尔处理功能是MCS-51系列单片机的一个重要特征,这是出于实际应用需要而设置的.布尔变量也即开关变量,它是以位(bit) ...

  2. linux 8051 编译,[编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)

    星期二, 10. 七月 2018 01:01上午 - beautifulzzzz 一.SDCC(Small Device C Compiler)编译环境搭建 SDCC是一个小型设备的C语言编译器,该编 ...

  3. linux中板子烧写环境配置,3、在Linux下搭建51单片机的开发烧写环境(makefile版)...

    星期二, 10. 七月 2018 01:01上午 - beautifulzzzz 一.SDCC(Small Device C Compiler)编译环境搭建 SDCC是一个小型设备的C语言编译器,该编 ...

  4. 单片机C语言头文件如何写,51单片机头文件怎么写

    本文收集整理关于51单片机头文件怎么写的相关议题,使用内容导航快速到达. 内容导航: Q1:51单片机的头文件究竟该如何写 举个例子先判断是否被定义过,没定义就先定义好,主要就是防止重复包含 #ifn ...

  5. 【MCS-51】51单片机指令系统大全

    指令是指挥微型计算机工作的的计算机命令,对于51单片机来说,其主要使用的指令有两种形式:机器语言指令和汇编语言指令. 机器语言指令是指使用二进制代码表示的指令: 汇编语言指令是指使用容易我们记忆的缩写 ...

  6. 51单片机用c语言写音符代码,51单片机电子琴设计C语言程序实例

    51单片机C程序实例,电子琴设计 #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsi ...

  7. C51汇编语言16进制加法,51单片机汇编语言带进位加法指令(4条)

    算术运算指令共有24条,算术运算主要是执行加.减.乘.除法四则运算.另外MCS-51指令系统中有相当一部分是进行加.减1操作,BCD码的运算和调整,我们都归类为运算指令.虽然MCS-51单片机的算术逻 ...

  8. 51单片机ADD,ADDC与SUBB指令详细分析

    ADD与ADDC 加法指令: 例如:执行0xfefe+0x0003 由于单片机只能处理8位数据加减法 具体操作如下: /低八位加法// mov r0,#0xfe ;0xfefe 先将低八位给r0寄存器 ...

  9. 51单片机摇摇棒改字原理详解

    https://blog.csdn.net/qq_43367031/article/details/83095583?tdsourcetag=s_pctim_aiomsg

最新文章

  1. dht11温湿度传感器c语言程序_手把手教你DIY一款性价比爆棚的温湿度计!
  2. 网络服务-SAMBA
  3. Apache ZooKeeper - Leader Election使用场景
  4. 【超实用】HCIE-RS面试真题分享
  5. 实例Python处理XML文件的方法
  6. NYOJ 679 The Weight of Tree 搜索+dp+邻接表
  7. pyflink shell的remote模式下的实验记录
  8. spring的基本配置和使用
  9. 【css】适配iphoneX
  10. Jmeter系列之简介与环境安装
  11. MindManager思维导图 PRDBRD写作方法与技巧 产品规划模板下载
  12. SPSS方差分析应该如何进行
  13. du-查看文件夹大小-并按大小进行排序
  14. 在 MacOS 上使用 Qt 开发 Android APP
  15. Java数据结构树实验报告总结_20172302 《Java软件结构与数据结构》实验二:树实验报告...
  16. matlab求解非线性0-1规划案例
  17. 学术期刊数据库---EBSCO
  18. 快速入门Linxu笔记
  19. Generating Event Causality Hypotheses through Semantic Relation
  20. Android拼图游戏设计(包括游戏算法及数据库设计)

热门文章

  1. ”抓大头“(无穷/无穷)时候两个注意点
  2. 最新版MySQL 8.0 的下载与安装(详细教程)
  3. java函数式编程的原理的理解
  4. nginx入门、了解
  5. 最全PHP防止sql注入方法
  6. Flash旋转3D展示
  7. 程序猿七夕礼物-如何30分钟给女友快速搭建专属语聊房
  8. DP算法-背包问题与线性DP问题(Acwing)
  9. 获取了网站源码有什么用_和平精英荧光棒有什么用?如何获取?
  10. 游戏开发之旅——使用CocosCreator完成卡牌2048主要逻辑