MCS-51单片机指令系统“读-改-写”方式指令

发布者:快乐的舞蹈最新更新时间:2022-05-31 来源: eefocus关键字:MCS-51  单片机  指令系统 手机看文章 扫描二维码
随时随地手机看文章

51 单片机有四个 8 位的并行接口。由于内部结构的特点,并行接口在输出 0、1 的时候,能力是不一样的。输出 0 的时候,能力较强,但输出 1 的时候,能力就很差了,而 P0 口,则要外接上拉电阻才能输1。


单片机从端口读入数据的通道有两个,一个是从锁存器引入,一个是从输出引脚处引入,分别叫做“读锁存器”和“读引脚”。单片机在进行端口输出时,经常要参考其上一次的输出状态。 


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


而对于LED的二极管作用将输出高电平拉至“0”电平,实际上外接电路,很容易把引脚的电平拉低,这也就是为什么二极管能将输出高电平拉至“0”电平。


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


浅谈“读—修改—写”操作

在做“读—修改—写”操作时,单片机首先将欲修改的寄存器的内容读回ALU,对相应位进行修改,然后再整个写回原来的寄存器地址。通常在对寄存器的某一位进行置位、清零、检测、传送或逻辑运算时指令的实际执行过程为“读—修改—写”。熟悉指令的“读—修改—写”实质对于硬件和软件设计都至关重要,尤其在对单片机的I/O口进行上述操作时,忽略这个问题可能会出现意想不到的情况。因为不像内部寄存器,I/O口是与外围电路相连的,“读—修改—写”操作读回的值可能并不是原来写入的值。

 

下面以51和PIC两种单片机为例阐述二者“读—修改—写”操作的差异以及对硬件设计产生的影响。

 

PIC单片机的I/O口为完全的双向口,读写方向由端口方向寄存器控制。PIC单片机操作指令读I/O口寄存器时,读的是I/O口引脚上电平的实际状态。当用BSF、BCF、BTFSS、BTFSC四条指令对I/O口进行按位修改或测试之前,单片机首先要将端口寄存器的值读回。设想如下情况:用I/O口第0位驱动晶体管的基极,当输出为1时晶体管导通。然而一旦晶体管导通,I/O口的电平将会被钳位在晶体管BE结导通压降上(0.7伏左右)。若此时想用BSF或BCF给同一个I/O口的其他位进行操作,则会出现“读—修改—写”造成的问题——由于读端口寄存器实际上读的是引脚上的电平,ALU中读回的端口寄存器值第0位实际上为0(而不是原来写的1),这样在修改完毕再写回去时,第0位就真的变成了0,于是原来导通的晶体管将意外关断。解决此问题的方法是在I/O口和基极之间串联一个电阻,用电阻上的压降抬高I/O口电平至TTL阈值以上,这样读回的就是1了。

 

51单片机有四个I/O口P0~P3,对端口的操作分为读锁存器和读引脚两种方式。由于在其I/O口硬件设计时内部数据总线与端口锁存器输出以及外部引脚分别经过缓冲电路直接关联,通过读锁存器和读引脚的方法可以分别读取端口寄存器的写入值或者I/O口引脚上的实际电平状态。在使用ANL、ORL、XRL、CLR、SETB等位操作指令对I/O口进行按位修改时,单片机将首先读回端口锁存器的值,送入ALU进行相应位修改,再写回端口寄存器,通过驱动电路输出给外围电路。注意这里不会出现像PIC单片机的问题:读回来的是端口锁存器的值而不是I/O口引脚的状态,所以即使驱动晶体管的基极使得引脚电平被钳位为低,ALU中读回的依然是1,这样在返写时不会使晶体管意外关断。

关键字:MCS-51  单片机  指令系统 引用地址:MCS-51单片机指令系统“读-改-写”方式指令

上一篇:Keil C51,内存与指针 反汇编比较
下一篇:C51单片机浮点数运算

推荐阅读最新更新时间:2024-11-16 23:59

用老电脑设计的单片机系统通用键盘的方法
计算器品种繁多、制造精美、触发灵敏、价格便宜。用旧计算器改制成单片机系统的通用键盘,可以方便地与任意的单片机应用系统连接,不管是在实验制作还是实际应用中,都不失为一种简捷方便的方法。 笔者用计算器做了一个通用键盘,在几个应用系统中使用。效果比用普通的按键好,使用非常方便。 电路见图1、图2。先选择一个外观适宜美观的计算器(本文以RS-3890型计算器为例),打开后盖,找出键盘矩阵的行线和列线,并做上标记。画一张该 矩阵键盘 和符号的对应图,如图2所示。 把原键盘的行线和列线通往掩膜芯片的印刷线路切断,然后用细漆包线将行线和列线接到AT89C2051单片机的相应L/O口上,作为新键盘的检测线。 本文用P1.0~P1.
[单片机]
用老电脑设计的<font color='red'>单片机</font>系统通用键盘的方法
“Silicon Labs C8051F单片机技术研讨会”西安登场
专业电子元器件代理商 益登科技 今日宣布, 将与 高 效能模拟与混合信号 IC 领导厂商 Silicon Laboratories 携手合作,于 11 月 28 日 在西安举办 “C8051F 系列单片机技术研讨会 ” ,向用户呈现这些产品独特的功能。 据了解, C8051F 系列单片机因为其极高的指令运行速度,高性能的模拟功能和高集成性,受到用户的广泛欢迎。 随着 C8051F 系列单片机新产品的不断推出,一些新的应用也涌现出来。 此次研讨会将致力深入剖析 C8051F 的各种技术,介绍新近推出的 Ethernet 系列、 OTP 系列、 Automotive 系
[焦点新闻]
超低功耗单片机MSP430F413实现的智能遥控器
目前市场上常见的无线遥控器多数为四键和十二键,主要用于汽车防盗系统、家庭防盗系统及遥控玩具等方面,这些应用简单、实用、成本低。但对于一些工程中需要距离在100米以上,控制或设定一些数据时,并要求一个遥控器对多于12个甚至上百个设备时,上述遥控器对操作人员就不方便,而且系统性能不够稳定。鉴于上述情况我们便提出在此基础上,采用单片机编写地址,通过操作键设置,液晶显示遥控器的输出。同时对耗电量、多个控制的设定、便于携带、操作方便及性能稳定等的严格要求,于是便设计开发出一种新型智能遥控器。该型遥控器以TI公司的超低功耗单片机MSP430F413为微处理器,配有低功耗3位液晶显示器EDS812A,还有传输比很高的光,整个系统采用锂电池和高能
[单片机]
超低功耗<font color='red'>单片机</font>MSP430F413实现的智能遥控器
51单片机12M晶振的延时程序
这是本人慢慢调出来的参数,有误差是必须的,除非用汇编才会精确,后续我会更新修改,尽量精确。 调试环境:Keil V4.02 源代码如下: #include reg52.h #include intrins.h //--延时0.2*n(ms)函数,若需延时1ms,则*5。适合延时50ms以下或左右的--// void DelayMSx02(unsigned char n) { unsigned char x, y; for(x=n; x 0; x--) for(y=96; y 0; y--); //for循环中的 -- 位置前后都可以 } //--延时t*2+5(us)函数 --// void DelayUS
[单片机]
TLC1549串口传输与单片机的A/D设计
1 概述   TLC1549系列是美国德州仪器公司生产的具有串行控制、连续逐次逼近型的模数转换器,它采用两个差分基准电压高阻输入和一个三态输出构成三线接口,其中三态输出分别为片选(CS低电平有效),输入/输出时钟(I/O CLOCK),数据输出(DATAOUT)。TLC1549引脚排列如图1所示。TLC1549能以串行方式送给单片机,其功能结构如图2所示。由于TLC1549采用CMOS工艺。内部具有自动采样保持、可按比例量程校准转换范围、抗噪声干扰功能,而且开关电容设计使在满刻度时总误差最大仅为±1 LSB(4.8 mV),因此可广泛应用于模拟量和数字量的转换电路。 TLC1549在工作温度范围内的极限参数:   电源
[单片机]
TLC1549串口传输与<font color='red'>单片机</font>的A/D设计
Modbus协议下单片机与eView触摸屏的通信方法
  Modbus协议由于其具有开放性、透明性、成本低、易于开发等特点,已成为当今工业领域通信协议的首选。   本文介绍了一种基于Modbus通信协议的eView触摸屏与常用的51单片机的通信方法。该方法通过C51编程实现Modbus通信,在51系列单片机上具有通用性,有一定的借鉴作用。   工业控制中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。   触摸屏与单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国Modic
[工业控制]
基于单片机的等精度频率计设计
0 引言 随着微电子技术和计算机技术的迅速发展,特别是单片微机的出现和发展,使传统的电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代测量仪器。频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。传统的频率计测量误差较大,等精度频率计以其测量准确、精度高、方便等优势将得到广泛的应用。 传统的测频方法有直接测频法和测周法 ,在一定的闸门时间内计数,门控信号和被测信号不同步,计数值会产生一个脉冲的误差。等精度测频法采用门控信号和被测信号同步,消除对被测信号计数产生的一个脉冲的误差。等精度频率测量方法消除了量化误差,可以在整个测试频段内保持
[单片机]
基于<font color='red'>单片机</font>的等精度频率计设计
【GD32 MCU 入门教程】GD32 MCU 常见外设介绍(4)EXTI 中断介绍
EXTI(中断/事件控制器)包含多个相互独立的边沿检测电路并且能够向处理器内核产生中断请求或唤醒事件。 EXTI 有三种触发类型:上升沿触发、下降沿触发和任意沿触发。 EXTI中的每一个边沿检测电路都可以独立配置和屏蔽。 4.1.GD32 EXTI 外设原理简介 GD32 EXTI 主要特性(以 GD32F30x 为例) ◼ 高效的中断处理; ◼ 支持异常抢占和咬尾中断; ◼ 将系统从省电模式唤醒; ◼ 3 种触发类型:上升沿触发,下降沿触发和任意沿触发; ◼ 软件中断或事件触发; ◼ 可配置的触发源; ◼ Cortex-M4系统异常; ◼ 多达68种可屏蔽的外设中断; ◼ 4位中断优先级配置位,可配置16个中断优先级; ◼ EX
[单片机]
【GD32 <font color='red'>MCU</font> 入门教程】GD32 <font color='red'>MCU</font> 常见外设介绍(4)EXTI 中断介绍
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved