2021年 01月 04日 星期一
您的位置: 威廉希尔主页 > 单片机技术 >

如何对单片机进行片外程序存储器设计

来源:未知     作者:威廉希尔     发布时间:2021-01-04 18:42         

  协议的也不同,是指采用专用,应用P0口P2口地址总线和控制线的“三总线”方式访问的。关于编程的时候,和访问内部程序存储器,数据存储器不同是:1对外部程序存储器,和内部一样,程序不用改。2,。对片外的数据存储器,汇编要用MOVX DPTR 什么的,我也不懂,C语言相关的部分比如:变量关键字:pdata xdata 是片外数据存储器类型。输送的片外数据的

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

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

  但楼主要知道程序在读取片外指令代码时的过程:先寻址,再取数。单片机会根据PC的值先给P2和p0送一个选通地址(PC的值),接下来从片外程序存储器读取代码。因为PC的值一般是连续的,这就要求片外的程序存储器空间要连续分布,这和数据存储器不同。如果不连续分布,就要用特殊的行号改变PC的值,使它和片外程序存储器分布能够对应总之,记住三总线传递的方式,先寻址,再传数,由控制总线控制存储器一般都有WR,RD,CS线以及地址端口、数据端口,有些数据地址端口复用,有些分开。看这些存储器的datasheet就会明白如何访问他们内部的数据。例如读出外部ram地址为0x0001里的数据(假设有这个地址),那么就WR置高,CS置低,地址线,那么CPU的数据线就可以等到需要的数据了,这种情况下CPU的I/O只是做普通的I/O口。但是一般单片机和ARM都能够把I/O选择作为外部存储器的访问口,这时只要根据datasheet里的说明,把相应的线连上,CPU就能够根据你的指令自动在时序上配合,使得访问外部设备就像访问内部ram一样,这样做的好处就是节省CPU时间。

  假如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的信号不会被程序存储器和数据存储器同时收到。这是一个举例说明,具体情况要具体分析。

  【课程介绍】:朋友们大家好,本套视频教程由本人,现做为录播课程上传至电子发烧友网平台,感谢电子发烧友网让单片机学习的

  程序效果:利用单片机的定时/计数器设计一个计时器,按key0后启动,要求精确显示到百分之一秒。

  随着嵌入式系统小型化的趋势,市场对减少器件间通信所用的I/O引脚数的需求与日俱增。Microchip....

  你好,最近才发现21ic论坛存在很多大神级的高手,我最近在做一个训练项目,需要准确地四周物体的距离,所以来问有...

  因为一些原因,我将AD模块工作在查询方式下。发现AD码没有跟随信号变化。经过排查发现AD模块受到定时中断的影响...

  我正在处理负载单元,它有四根导线模块从它那里得到数据,但是我弄不清楚它发送的数据,hx711模块发送24位...

  Microchip的Soteria-G2定制固件基于功能全面的CEC1712 Arm® Cortex....

  SPIXBUF为空这个线BUFL问题。单片机是PIC24FJ256GA606。接收状态(SPIRBF)被改变...

  stc89c51单片机引脚输出高电平时是5v吗?但效果和接vcc不一样啊,vcc是5v吧?手上没有电压表。...

  请教诸位大侠,手中有一块原子哥的3.5寸tftlcd屏,这个屏是16位8080并口驱动的,我想用8位的51单片机驱动它可以吗? ...

  问题如标题:请问一下,大家学习STM32在工作中都有跑系统吗?还是跑裸机?如果只是跑裸机,学习STM32跟51单片机...

  我现在使用51单片机,编译器uv2。现在想同时使用SMT32,51,2种单片机。请问,MDK5是否可以编译上述2种单片机,...

  最近想学习下单片机的上位机开发,听说杜洋入门C#设计教程就是讲这个的,求有这些资料的大佬分享下。...

  一个单片机应用系统的硬件电设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RA....

  单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。个人电脑作为上位机,向下位机单片....

  物理参数。这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。合....

  使用RS 485总线通信技术传输数据时,很容易遇上干扰,使传输数据发生改变,从而导致传输错误。考虑到....

  首先应该确认电源电压是否正常。用电压表测量接地引脚跟电源引脚之间的电压,看是否是电源电压,例如常用的....

  我司低压智能型电动机马达装置,单片机技术,具备3C认证,485通讯,可以取代常规热继电器,具备多....

  利用光敏电阻检测室内光线的强弱,被动热释红外探测器可探测人体的特征,传感器将检测数据传送给控制核心—....

  机器人需控制在一个合适的速度行驶,速度太快,因单片机对各传感器传来的信号有一个响应、处理时间,小车极....

  单片机运用体系中,常有用单片机的IO口来完毕自关机(完全关机)的功用。通常用单片机的一个IO口操控一....

  身为一个电子工程师来说,我使用32位的单片机(主要是STM32)已经有10年的时间了。不要纠结是8位....

  BU-61580是美国DDC公司为MIL-STD-1553B标准设计的超大规模接口协议芯片,它是当前....

  目前电梯的生产情况和使用数量成为一个国家现代化程度的标志之一。电梯是机电一体的高层建筑的复杂运输设备....

  许多现在正在使用的柴油发动机测试平台都是通过仪表读数来分析、判断一台柴油发动机测试时的工作状态,不仅....

  网络上集的STC89C52RC单片机超声波测距程序及电子制作实物,使用单片机最小系统进行试验,超声波....

  直流调速器 20A低压 换向 DC12~48V RT系列调速器为低压直流四象限再生脉宽调速,采用专用....

      威廉希尔