历史上的今天
返回首页

历史上的今天

今天是:2025年04月03日(星期四)

正在发生

2018年04月03日 | 单片机片外程序存储器数据存储器操作命令分析

2018-04-03 来源:eefocus

    单片机片外程序存储器数据存储器操作命令与通常所说的存储器不同,和I2C总线的AT24C02不同,SPI协议的也不同,是指采用专用接口电路,应用P0口P2口地址总线和控制线的“三总线”方式访问的。关于编程的时候,和访问内部程序存储器,数据存储器不同是:1对外部程序存储器,和内部一样,程序不用改。2,.对片外的数据存储器,汇编要用MOVX  DPTR 什么的,我也不懂,C语言相关的部分比如:变量关键字:pdata  xdata  是片外数据存储器类型。输送的片外数据的寄存器地址也要按实际输送,其他没什么区别。没有说要特意操作特殊寄存器。.

    在设计片外程序存储器之前,首先要决定EA引脚的电平。

    EA=0,单片机只访问外部程序存储器,对于8031单片机此引脚必须接地.EA=1,单片机访问内部程序存储器,对于内部有程序存储器的8XX51单片机,此引脚应接高电平,但若地址值超过4KB范围,单片机将自动访问外部程序存储器。

    设定好EA后,单片机自动按程序所设定的次序执行。

    在编程中不需要专门的语句指定调用的是外部程序存储器。比如设定EA接高电平,则程序在执行完片内的程序存储器指令后自动转入片外程序存储器,而无需特殊命令。这就是所谓的程序存储器是片内外统一编址,而数据存储器则用Mov和Movx分别对待的。

    但楼主要知道程序在读取片外指令代码时的过程:先寻址,再取数。单片机会根据PC的值先给P2和p0送一个选通地址(PC的值),接下来从片外程序存储器读取代码。因为PC的值一般是连续的,这就要求片外的程序存储器空间要连续分布,这和数据存储器不同。如果不连续分布,就要用特殊的行号改变PC的值,使它和片外程序存储器分布能够对应

    总之,记住三总线传递的方式,先寻址,再传数,由控制总线控制

    存储器一般都有WR,RD,CS线以及地址端口、数据端口,有些数据地址端口复用,有些分开。看这些存储器的datasheet就会明白如何访问他们内部的数据。例如读出外部ram地址为0x0001里的数据(假设有这个地址),那么就WR置高,CS置低,地址线上输出0x0001,那么CPU的数据线就可以等到需要的数据了,这种情况下CPU的I/O只是做普通的I/O口。但是一般单片机和ARM都能够把I/O选择作为外部存储器的访问口,这时只要根据datasheet里的说明,把相应的线连上,CPU就能够根据你的指令自动在时序上配合,使得访问外部设备就像访问内部ram一样,这样做的好处就是节省CPU时间。

    把地址0x0001置为0x55的C语言指令为

    (*(unsigned char*)0x0001)=0x55;  //(这里假设数据宽度为8bit)

    假如I/O口选择的功能是外部数据地址总线,并且硬件上接好,那么这条指令也就是对外部存储器相应地址的读写。

    值得一提的是,各种类型的存储器件的访问速度都不一样,因此如果把程序放在外部器件里执行,执行时间就会有比较大的差别,例如一个for循环放在外部ram和外部flash中执行速度可能会差到3倍。

    第一,单片机采用三总线结构传递数据。地址总线、数据总线、控制总线。传递数据的过程是先寻址,再传递数据。即先送一个地址信息(由单片机向总线写地址信息),由寄存器(程序存储器或数据存储器)根据这个地址,把微处理器要读取的数据写到总线上,微处理器再读取这个数据。整个过程由控制总线控制。所以每次读的数据是针对那个地址对应的寄存器操作的,不会发生混乱。写数据时一样,先寻址,再写数据,数据就写入刚才寻址时的地址对应的那个寄存器里去了。

    第二、程序存储器、数据存储器有不同的选通信号,在一个指令周期里,是不同的时间选通的,所以不会混乱。

    第三、选通的引脚不同。拿片外数据存储器来说,是P3的第6和第7引脚做选通信号,程序存储器是PSEN做选通信号,他们接在各自器件的选通引脚上,所以不会混乱。

    第四,指令不同。拿汇编指令来说。MOV是程序存储器传递数据用,MOVX是数据存储器传递数据用(对片外而言)。

    总之,记住三总线传递的方式,先寻址,再传数,由控制总线控制,这个模式,你就容易理解这个了。

    单片机的p2和p0分别传递地址的高八位和低八位。同时p0还传递数据。在时序信号的ALE高电平期间,锁定地址信息。/PSEN是选通程序存储器的。在/PSEN低电平期间是向程序存储器传递程序代码,/WR和/RD是选通数据存储器的,即在/WR和/RD低电平期间把数据传递给数据寄存器。而/PSEN和/WR及/RD是在不同时间变为低电平的,没有重叠的部分。也就是说,当/WR及/RD变成低电平时,/PSEN已经恢复高电平了,由P0口传出的数据信息当然只会传到数据存储器里,因为程序存储器已经不再处于选通状态了!从表面看,都是从p0口传出的,但因为选通器件的时间不同而不会发生混乱。当然我说的是片外程序存储器和数据存储器的的情况,其实对片内也一样,还是三总线的这种控制方式,使它们在不同的时间被选通,而不至于发生冲突。

    看看单片机的一个电路图。你会发现p0既跟74LS373连,又跟8155或8255或键盘或数模转换器等连接。而8155或8255或键盘或数模转换器等对单片机而言是当做数据存储器处理的。74LS373连的多半是程序存储器。那么p0送出的信号不是两者都接受了吗?注意看ALE接74LS373的G接口,锁存地址用,PSEN有时用有时不用。WR和RD接数据存储器的选通接口。因为WR和RD跟ALE的信号在时间上没有重叠部分,所以p0的信号不会被程序存储器和数据存储器同时收到。这是一个举例说明,具体情况要具体分析。


推荐阅读

史海拾趣

EPIC公司的发展小趣事

随着公司的发展,Epic Games开始通过收购和投资来扩展其业务范围。2007年8月20日,Epic Games收购了一家位于波兰的游戏开发商People Can Fly,并成为其第一大股东。这次收购不仅为Epic Games带来了更多的开发资源,也使其在游戏开发领域的实力得到了进一步提升。此外,Epic Games还积极投资其他有潜力的游戏开发商和团队,以推动整个游戏行业的创新和发展。

台湾远翔(Feeling Technology)公司的发展小趣事

乔光电子在全球拥有广泛的销售网络,不仅在国内的上海和深圳设有销售公司,还在韩国、印度、新加坡、巴西、意大利等国家设立了销售据点。随着市场的不断拓展和技术的不断创新,乔光电子的销售额从2015年的2200万元增长到2022年的27000万元,实现了跨越式发展。未来,乔光电子计划进一步扩展导热导电胶生产线业务,并可能涉足传感器和安规电容领域。同时,公司还将继续加大研发投入,提升产品性能和质量,为全球客户提供更加优质、可靠的电子产品和服务。

Ferranti Electric Inc公司的发展小趣事

Ferranti Electric Inc公司非常重视知识产权的保护和积累。通过不断的技术研发和创新,公司积累了大量的知识产权,包括商标、专利等。这些知识产权的拥有不仅彰显了公司的技术实力和创新能力,也为公司的市场竞争提供了有力的保障。公司不断加大在研发和创新方面的投入,以保持其在电气行业的领先地位。

Caliber公司的发展小趣事

在电子行业中,品质是企业生存和发展的关键。Caliber公司深知这一点,从原材料采购到生产制造的每一个环节,都严格把控品质。公司建立了完善的质量管理体系,通过不断的技术改进和工艺优化,确保每一款产品的品质都达到行业最高标准。正是这种对品质的执着追求,让Caliber的产品在市场上获得了良好的口碑,也为公司的长期发展奠定了坚实的基础。

Excel-Display Corporation公司的发展小趣事

EDC一直将产品质量视为企业的生命线。为了确保产品质量,公司建立了严格的质量管理体系,从原材料采购到生产过程中的每一个环节都进行严格的质量控制。

此外,EDC还注重售后服务,为客户提供全方位的技术支持和解决方案。这些举措让EDC赢得了客户的信赖和好评,也为公司赢得了更多的市场份额。

EOZ S.A.S公司的发展小趣事

在电子行业日益关注环保和可持续发展的背景下,EOZ S.A.S公司积极响应号召,致力于绿色电子产品的研发和生产。公司采用环保材料替代传统材料,优化生产工艺降低能耗和废弃物排放。同时,EOZ S.A.S还推出了电子产品回收计划,鼓励消费者将废旧电子产品交给公司进行回收处理。这些举措不仅提升了公司的品牌形象,也为公司赢得了更多消费者的青睐。

问答坊 | AI 解惑

菜鸟问个问题??急

我用的单片机是mc9s12dg128,现在在调最小系统,情况是: 1、板子只焊了主芯片、电源部分、复位电路部分。电源部分正常,主芯片是新的,没有向里面下载过程序 2、复位电路的输出信号reset应该在没有按按键时是高电平,但是实际上测是低电平(未按 ...…

查看全部问答>

让你的电脑漂亮起来!为你的磁盘装上一见漂亮的衣裳吧!

http://download.eeworld.net/source/2310249(软件地址)这个软件安装好了以后,不单单是现在表面所看到的!图片地址(http://home.51.com/wutuanfeng/photo/item/100133258.html)在这些文件夹里面还是一样的效果背景图也是变化万千的!文件夹的 ...…

查看全部问答>

应用程序调用 wince5.0的 nandflash驱动 错误

使用 CreateFile 但始终都不成功,应用中代码如下                 hFunction = CreateFile( TEXT(\"DSK1:\"),                 GENERIC_ ...…

查看全部问答>

keil文件不能编译

我现在下载的是keil uv3,安装成功后,能够输入程序,但是编译不起来,在编译的时候会出现提示框:uVision3-Path undefined,\'tOOLS.INI\' does contain a tool path ,you have selecteed a device  where no toolchain has been install ...…

查看全部问答>

各位请看图片..

请问怎么实现按红键便会发出一段30多秒的对话?…

查看全部问答>

关于传真通讯过程问题

各位有玩过传真芯片没 传真通讯过程中发送端要发送TCF,是1.5s的“0”串 是1.5s的0x00么 另外 接收端怎样确定正确接收TCF 是判断接收的是不是1.5s的0x00么 各位指点下 谢谢…

查看全部问答>

单片机初学者问题,高人指点,急,在线等。谢谢了!!!!!!!!!!!

本人初学者,下载了平凡的单片机的电子书。本人初学,望高手指点,不要笑话。谢谢了。 问题如下: #include “reg51.h” sbit P1_0=P1^0; void main() { P1_1=0; } 这个是让接在p1.0脚上的led发光。既然都给p1_1赋了0,就是让p1.0脚发光 ...…

查看全部问答>

STM32中到底有没有内部基准?

见stm32CDE中文版数据手册33页5.3.4。 贴不了图啊。。。。…

查看全部问答>

自动喂狗狗装置

狗狗日常饮水是不能少的,不过很多粗心的主人也许会忘,并且狗狗喜欢新鲜的水,这就意味着需要随时添加。  这套自动狗狗喂水系统有两个传感器,一个靠近顶部,一个是底部,负责控制什么时候加水,什么时候停止加水   …

查看全部问答>

iar ewarm 6.10.1破解版

iar ewarm 6.10.1破解版资源由iar ewarm 6.10.1 官方原版文件加注册机组合而成, 安装原本文件之后运行注册机注册一下…

查看全部问答>