#C51单片机————总线与系统扩展


C51单片机————总线与系统扩展


Created with Raphaël 2.1.2 张三 张三 李四 李四 四哥,IO口不够用怎么办? 你可以进行系统扩展! 什么鬼? 那是什么东西? 。。。 看书去

1.引文

前面说过单片机的特点是体积小,功能全,系统结构紧凑、对于小型的需求可以满足要求。那么稍大一点嵌入式系统呢?那么有可能你的数据存储器、程序存储器还有IO口都可能不够用!那怎么办呢?我们就需要进行系统扩展了。


基本知识与回顾

我们都知道的是CPU大都通过三总线(数据、地址、控制)与外界进行信息交换的。
- 数据总线:传输指令码和数据,外围的芯片都需要它来进行信息交流。
- 地址总线:传输的是地址信息(数据传到哪儿的信息)


2.扩展

单片机系统总线信号

  1. P0口是地址(A0~A7) / 数据复用线(D0~D7),经锁存器提供低8位地址,锁存信号是由CPU的ALE引脚提供的;
  2. P2口提供高8位地址 A8 ~ A15。
  3. 控制信号:RD、WR、ALE、PSEN 分别是读、写、地址锁存信号和程序存储器的控制信号
总线控制信号
RD WR ALE PSEN
地址锁存信号 程序存储器的控制信号

存储容量计算

存储容量计算
地址线根数 8 10 12 n
存储单元个数 256 1024 4096
2 n
存储单元个数
2 8
2 10
2 12
2 n

MOVX的使用:

聊聊MOVX ,之前说过MOVX是外部存储器和A之间的数据流动。
MOVX
读时序
这里写图片描述
写时序
这里写图片描述


MOVX A,@DPTR
1. 首先我们应该认识到这是一个读命令(与8086的IN差不多),怎么读呢?
2. 我们将这个指令分为两个时间段。
3. 时间段一:将地址要读的地址发出去(地址放在DPTR中),发送ALE信号到74LS373锁存器,将P0的低八位地址锁存起来,P2信号是输出状态
4. 时间段二:P2继续输出高位地址,锁存器输出低8位地址,WR信号下降沿让数据存储器出数据、P0获取数据赋予A。

MOVX A,@DPTR
名称 时间段一 时间段二
P0 Address 低八位 DATA
P2 Address 高八位 Address 高八位
ALE 高电平锁存Address低八位
锁存器 ALE锁存Address低八位 Address 低八位
RD 下降沿读取数据

MOVX @DPTR,A
1. 首先我们应该认识到这是一个读命令(与8086的OUT差不多),怎么写呢?
2. 我们将这个指令分为两个时间段。
3. 时间段一:将地址要读的地址发出去(地址放在DPTR中),发送ALE信号到74LS373锁存器,将P0的低八位地址锁存起来,P2信号是输出状态
4. 时间段二:P2继续输出高位地址,锁存器输出低8位地址,RD信号下降沿让数据存储器出数据、P0发送数据写入存储器。

MOVX @DPTR,A
名称 时间段一 时间段二
P0 Address 低八位 DATA
P2 Address 高八位 Address 高八位
ALE 高电平锁存Address低八位
锁存器 ALE锁存Address低八位 Address 低八位
WR 下降沿写入数据

MOVC的使用:

聊聊MOVX ,之前(单片机指令系统那篇文章)说过MOVC是程序存储器向A的数据流动,且是变址寻址(只能读)。
MOVC

这里写图片描述


MOVX A,@A+DPTR
1. 首先我们应该认识到这是一个读命令(与8086的IN差不多),怎么读呢?
2. 我们将这个指令分为两个时间段。
3. 时间段一:将地址要读的地址发出去(地址放在DPTR和A中),发送ALE信号到74LS373锁存器,将P0的低八位地址锁存起来,P2信号是输出状态
4. 时间段二:P2继续输出高位地址,锁存器输出低8位地址,PSEN信号让程序存储器出数据、P0获取数据赋予A。

MOVX A,@DPTR
名称 时间段一 时间段二
P0 Address 低八位 DATA
P2 Address 高八位 Address 高八位
ALE 高电平锁存Address低八位
锁存器 ALE锁存Address低八位 Address 低八位
PSEN 发控制读取数据

如有错误!请多多包含,方便的话留个言!我好马上修改。

猜你喜欢

转载自blog.csdn.net/qq_36739040/article/details/81053019