我们可以把单片机理解为一个多功能的存储器的整合。里面有锁存器、暂存器、寄存器等各种各样的存储器。对单片机的编程其实就是对各个存储器的寻址和读写操作,所以说只要我们明白了单片机的存储器结构和各个存储器的功能,掌握了对各个存储器的寻址和读写方法,也就学会了单片机的编程。
存储器有两种结构。一种是将程序指令存储器和数据存储器合并在一起的存储器结构,叫普林斯顿结构。另一种是有两个相互独立的程序存储器与数据存储器,叫哈佛结构,51单片机就采用这种结构。
51单片机中有256B的数据存储器(RAM),相当于电脑中的内存,是用来暂时存放数据的,一旦断电,内容就会消失。它的地址门牌号是从00tH到FFH。其中,00H~1FH是工作寄存器区,是一些专用宿舍,可以存放各种数据。20H~2FH是位寻址区,它不但宿舍有编号,而且床位也有编号,所以是可以按床位找到的宿舍。301-1~7FH是用户RAM区。是一些可以临时指定的宿舍。从801"~一FFH这128个字节是特殊功能寄存器区,它们相当于专用办公室。我们前面说的锁存器、暂存器、寄存器等各种各样的存储器都在这里。
还有程序存储器(ROM)是用来存放程序指令和常数表格的,在有的单片机比如8031中是没有的。在8051中有4K个字节,我们用的AT89S52中有8K字节。其中0000H~002AI-1是系统启动和中断入口专用的。
如果单片机内部的存储器不够用。那么就需要外接存储器,我们称之为存储器扩展。
看下图,这里我们用EPROM芯片27256作外接扩展程序存储器,用静态RAM芯片6264作外接扩展数据存储器。扩展的时候我们用P0口与外部存储器的数据线相连,称为数据总线。用P0口通过地址锁存器741.一$373与外部存储器的低8位地址线相连,与数据线分时复用,P2口直接与外部存储器的高8位地址线相连,称为地址总线。总线宽度为16位,可以寻址的存储空间有64KB。
另外单片机还提供ALE(PQ口的地址锁存信号,接锁存器74[一S373的使能端LE)、PSEN(外部程序存储器读选通信号,接外部程序存储器27256的输出允许端OE)、EA(片内/片外程序存储器选择控制,接地)、WR(P3.6外部RAM写信号,接外部数据存储器6264的写控制信号端WE)、RD(P3.7外部RAM读信号,接外部数据存储器6264的读输出允许端OE)等5个控制接口,称为控制总线。
一般存储器上都有片选端CS或CE,这里都做接地处理。也可以扩展时把多余的地址总线(即除去存储容量所占用的地址总线外)中的某一根地址线作为选择某一片存储或某一个功能部件接口芯片的片选信号线连接到片选端上。叫线选法;或者通过地址译码器连接。叫译码法。
据存储器的扩展与程序存储器的扩展非常相似,所使用的地址总线和数据总线完全相同,但是它们所用的控制总线不同,数据存储器的扩展所使用的控制总线是WR和RD,而程序存储器所使用的控制总线是PSEN。因此虽然它们的地址码相同,但是由于控制信号不同所以不会冲突。还有它们所使用的指令也不同,控制信号也是随着指令产生的。
在51单片机的数据传输指令中有两组。一组是:
MOVX A,@Ri
MOVX A,@DPTR
MOVX @Ri,A
MOVX @DPTR,A
这四条指令是专用于对外部数据存储器进行读和写的指令。
一组是:
MOVC A,@A+PC
MOVC A,@A+DPTR
这两条是专用于对程序存储器中的数据进行读取的指令,当单片机的EA脚接地时,这两条指令就访问的是外部程序存储器。
上一篇:机器人的硬件电路设计