单片机外部存储器怎么访问

2024-06-02 22:44:11 (54分钟前 更新) 409 9468

最新回答

就是把内存卡。连接电脑上!
就是把内存卡。连接电脑上!
stella59444 2024-06-02
存储器一般都有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,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有
会逃跑的桃子 2024-05-23
如果访问的是外部程序存储器中存储的数据的话,用的是MOVC指令;如果访问的是外部程序存储器中的指令的话,这个好像不需要我们写代码,单片机会自己去读取指令;
如果访问的是外部程序存储器中存储的数据的话,用的是MOVC指令;如果访问的是外部程序存储器中的指令的话,这个好像不需要我们写代码,单片机会自己去读取指令;
nana鬼鬼 2024-05-09
aa  =  0x100;  
*aa  =  0xAA;  //这里多了一个*,,表示往地址里面写数据.  
当然如果你要读0x100的数据  
那就  
char  da;  
da  =  *aa;去回来就行了.  
这种句子.翻译成汇编就是movx  dptr  ,  @a这种的句子  
因为51访问外部ram用的就是movx  指令,,非前256字节  
只能通过dptr访问  
用movx指令.单片机会自动产生.你上面写的操作P0上次的动作,  
所以如果要这样访问,必须P0有锁存器,,否则不可能完成任务
aa  =  0x100;  
*aa  =  0xAA;  //这里多了一个*,,表示往地址里面写数据.  
当然如果你要读0x100的数据  
那就  
char  da;  
da  =  *aa;去回来就行了.  
这种句子.翻译成汇编就是movx  dptr  ,  @a这种的句子  
因为51访问外部ram用的就是movx  指令,,非前256字节  
只能通过dptr访问  
用movx指令.单片机会自动产生.你上面写的操作P0上次的动作,  
所以如果要这样访问,必须P0有锁存器,,否则不可能完成任务
威斯东wisdom 2024-04-26
如果访问的是外部程序存储器中存储的数据的话,用的是MOVC指令;
如果访问的是外部程序存储器中的指令的话,这个好像不需要我们写代码,单片机会自己去读取指令
如果访问的是外部程序存储器中存储的数据的话,用的是MOVC指令;
如果访问的是外部程序存储器中的指令的话,这个好像不需要我们写代码,单片机会自己去读取指令
超级无敌暴暴 2024-04-21

扩展回答

3

什么是单片机

它有什么用?它的工作原理是什么?

8

什么是语音单片机

咨询,什么是语音单片机,有什么用处

9

高温单片机如何选型

求业界良心人士指点下如何选型高温单片机,请问有什么注意要点吗?越详细越好,谢谢

热门问答

装修专题

页面运行时间: 0.14893007278442 秒