历史上的今天
返回首页

历史上的今天

今天是:2025年03月10日(星期一)

正在发生

2018年03月10日 | 关于AT89S51某些指令的说明

2018-03-10 来源:eefocus

  1.关于并行I/O口的“读引脚”和“读锁存器”指令的区别
  
  读并行I/O口有“读引脚”和“读锁存器”之分。以Pl口为例,当P1口的P1.0引脚外接一个发光二极管LED的阳极,LED的阴极接地。若想查看一下单片机刚才向P1.0脚输出的信息是0还是1,这时不能直接从P1.0读取,因为单片机刚才向P1.0输出的信息如果是1的话,则LED导通点亮,此时P1.0引脚就为0电平,如果直接读引脚,结果显然是错误的。正确的做法是读D锁存器的Q端状态,那里储存的才是前一时刻送给Pl.0的真实值。也就是说,凡遇“读取P1口前一状态以便修改后再送出”的情形,都应当“读锁存器”的Q端信息,而不是读取引脚的信息。
  
  当P1口外接输入设备时,要想P1口引脚上反映的是真实的输入信号,必须要设法先让该引脚内部的场效应管截止才行(如图2-7所示),否则当场效应管导通时,P1口引脚上将永远为低电平,无法正确反映外部设备的输入信号。让场效应管截止,就是用指令给Pl口的相应位送一个1电平,这就是为什么读引脚之前,一定要先送出1的原因。
  
  指令“MOV C,Pl.0”读的是Pl.0引脚,同样,指令“MOV A,Pl”也是读引脚指令,读引脚指令之前一定要有向Pl.0写1的指令。而指令“CPL Pl.O”则是“读锁存器”,也即“读-修改-写”指令,它会先读Pl.O的锁存器的Q端状态,接着取反,然后再送到Pl.0引脚上。而指令“ANLPl,A”也是“读锁存器”命令。类似的“读-修改-写”指令举例如下:
  640
  2.关于操作数的字节地址和位地址的区分问题
  
  如何区别指令中出现的字节变量和位变量呢?例如指令“MOV C,40H”和指令“MOV A,40H”两条指令中的助记符相同,但是指令中源操作数“40H”都是以直接地址形式给出的,“40H”究竟是字节地址还是位地址?对于助记符相同的指令,观察操作数就可看出。显然前条指令中的“40H”是位地址,因为目的操作数C是位变量。而后条指令中的“40H”是字节地址,因为目的操作数A是字节变量。当然,对于助记符不同的指令,从助记符的形式,就可以看出其中指令究竟是“字节”操作,还是“位”操作。
  
  3.关于累加器A与ACC的书写问题
  
  累加器可写成A,也可写成Acc,它们的区别是什么?在51单片机汇编语言指令中是有区别的。Acc在汇编后的机器码必有一个字节的操作数是累加器的字节地址EOH,A在汇编后则隐含在指令操作码中。例如指令“INC  A”的机器码,查表3-2是04H。如写成“INC  Acc”后,则成了“INC direct”的格式,再查表3-2,对应的机器码为“05H EOH”。在对累加器A的直接寻址和累加器A的某一位寻址要用Acc,而不能写成A。例如,指令“POP  Acc”不能写成“POP A”;指令“SETB  Acc.O”,不能写成“SETB A.O”。
  
  4.书写2位十六进制数据前要加“0”
  
  在书写源程序时经常遇到必须在某些数据或地址的前面多填一个“前导0”的问题,否则在汇编成时机器语言汇编就通不过。这是汇编语言的严格性和规范性的具体体现。由于部分十六进制数是用字母来表示的,而程序内的标号也常用字母表示,为了将标号和数据区分开,几乎所有的汇编语言都规定,凡是以字母开头(对十六进制数而言,就是A~F开头)的数字量,应当在前面添加一个数字“0”。至于地址量,它也是数据量的一种,前面也应该添加“0”。例如:
  650
  如果不加“前导0”,就会把字母开头的数据量当作标号来处理,从而出错以及不能通过汇编。

推荐阅读

史海拾趣

Corsair Memory Inc公司的发展小趣事

Corsair Memory Inc公司的成功不仅在于其产品的创新,更在于其与全球知名电脑厂商的合作。多家世界级的OEM合作伙伴选择Corsair作为其内存供应商,这不仅提升了Corsair的品牌影响力,也为其带来了稳定的订单和市场份额。这种合作关系的建立,是Corsair在电子行业中持续发展的重要支撑。

Alpha Semiconductor公司的发展小趣事

随着技术的不断积累和市场的变化,Alpha Semiconductor于1988年开始为OEM厂家设计定制产品。这一转型是公司发展历程中的重要一步,它使得Alpha Semiconductor能够更深入地了解客户需求,提供更加贴合市场需求的产品解决方案。通过不断的创新和改进,Alpha Semiconductor逐渐在半导体市场中树立了良好的口碑。

FRONTIER公司的发展小趣事

背景:此故事基于假设存在一个专注于超级计算机研发的FRONTIER公司。

发展故事:近年来,随着大数据和人工智能技术的飞速发展,超级计算机在科研、工业等领域的应用越来越广泛。FRONTIER Supercomputing作为该领域的佼佼者,成功研发出了世界上首台突破百亿亿次计算瓶颈的超级计算机——Frontier。该计算机以其卓越的性能和广泛的应用价值,在多个领域取得了突破性成就,如太空探索、气候建模、基因组学等。Frontier的成功不仅为公司赢得了国际声誉,也为全球科技进步贡献了重要力量。

GWP Group公司的发展小趣事

背景:FRONTIER Electronics作为一家专注于无源元件和集成无源元件设计与制造的公司,自成立以来便致力于技术创新。

发展故事:在21世纪初,FRONTIER Electronics凭借其在电感器、变压器、二极管等领域的深厚技术积累,成功推出了一系列高性能、高可靠性的电子产品。随着市场需求的不断增长,公司逐步扩大生产规模,并在全球范围内建立了完善的销售网络。通过持续的技术研发和市场拓展,FRONTIER Electronics逐渐在电子行业中崭露头角,成为该领域的领军企业之一。

Carling Technologies公司的发展小趣事

随着技术的不断进步和市场需求的多样化,Carling Technologies开始扩展其产品线,涵盖了液压磁热断路器、电子控制以及配电装置等多个领域。同时,公司也积极开拓全球市场,通过设立海外办事处和与当地企业合作,将产品销往世界各地。这一阶段的发展使得Carling Technologies成为了全球电气和电子开关领域的领先制造商之一。

BK Precision公司的发展小趣事

BK Precision一直将品质管理视为企业发展的核心。公司建立了严格的质量管理体系,从原材料采购到产品生产、检验、出厂等各个环节都进行严格把控。同时,公司还注重持续创新,不断推出符合市场需求的新产品。通过引进先进的生产设备和技术手段,BK Precision不断提高生产效率和产品质量,为客户提供更优质的产品和服务。

问答坊 | AI 解惑

红外线遥控开关芯片FLYK-HY01-A的引脚定义?

红外线遥控开关芯片FLYK-HY01-A的引脚定义,我想做一个多路遥控开关但不知该芯片的用法,多路继电器输出…

查看全部问答>

电子系统设计方法

本帖最后由 paulhyde 于 2014-9-15 09:42 编辑 电子系统设计方法和 设计报告写作 在设计一个电子系统时,首先必须明确设计任务,确定方案。然后进行各部分单元电路设计、参数计算和器件选择,最后将各部分连接在一起,画出一个符合要求的完 ...…

查看全部问答>

Red Hat9.0与Win XP双系统安装指南

Red Hat9.0与Win XP双系统安装指南…

查看全部问答>

【FPGA小技巧】异步信号处理代码

signal AsynInput: std_logic; signal InputReg: std_logic; signal Delay: std_logic; signal SynInput: std_logic; process(SynInput, AsynInput) begin if SynInput=‘1’ then --此置位为寄存器信号,为同步设计,可行 Input ...…

查看全部问答>

dsp 有eight stage pipeline的,请问这八个stage分别是什么?

知道5stage的 F/D                  - Fetch (from cache) and decode four instructions G                 - Group up to four instructions R & ...…

查看全部问答>

Apache 的util.c编译错误

我在redhat 9.0上编译arm版本的apache时提示:输入make后提示的不知道哪里出了错,谢谢啦~~cd ../apache_1.3.39make出现以下错误信息:gcc -c -I../os/unix -I../include -DSOLARIS2=290 -DMOD_SSL=208114 -DEAPI `../apaci` util.cutil.c: In func ...…

查看全部问答>

UCOS的中断嵌套

刚刚学习UCOS,没有时间去阅读书籍,只好先在这里向大家请教了在UCOS的IRQ中断处理过程中(ARM9平台),看到从IRQ模式切换到了SYS模式,并且禁止了IRQ中断,然后再去调用用户的设备中断服务程序。我想请教大家,切换到SYS模式是为了中断嵌套吗?如 ...…

查看全部问答>

万能实验机常见故障.......

有涉猎的人 可以一起讨论下  呵呵…

查看全部问答>

【PSoC4心得】PSOC4分频模块

PSOC4分频模块1.1      实验目的1)        创建项目2)        代码编写(三色灯闪烁演示)3)        跟一般的MCU对比功能和 ...…

查看全部问答>