终于搞明白了,李某某讲的真是一坨!
例一: 采用8位的Z80CPU微机控制系统,按控制要求扩展一个并行接口芯片PI0、一个计数器/定时器CTC、一个8位的A/D转换器ADC0808和一个8位的D/A转换器DACO832。指定它们的地址分别是40H~43H、44H~47H、58H和5CH。
一个并行接口芯片PI0:
40H 和 43H的二进制是多少:
两端极值取决于最后的A0 和 A1的取值 ,极大和最小分别是 00 和 11 :
这个芯片若想工作,则输入给其CE(取反)的信号必须是低电平,也就是Y0(取反)引脚必须输出低电平,那么另外三个一定是高电平,这样输出确定,输入A B C 也确定了 。
一个8位的A/D转换器ADC0808:
唯一不同的也是A0 和 A1 , 两端极值取决于最后的A0 和 A1的取值 ,极大和最小分别是 00 和 11 :
注意看,这个范围的话,两端极值取决于最后的A0 和 A1的取值 ,极大和最小分别是 00 和 11 这没话说,往前看,A7 A6 A5 A4 A3组成的0100组和,这个就是ABC的100:
也就是0000 0000 0100 0100是按照下图中编号的,下图中的号和下下图中的ABC 对应A2 A3 A4:
0100中的1对应A6,对应G1,看下下下图表格,ABC100的时候,G1是H :
试分析下图中8237A、8259A、8253,8255A的地址范围:
40H~43H
这个地址范围是十六进制(Hexadecimal)的,H
就是十六进制的标志。
具体解析:
40H
= 0x40 = 64(十进制)43H
= 0x43 = 67(十进制)
地址范围 40H~43H
涵盖的大小是:
- 从
40H
到43H
,总共有43H - 40H + 1 = 4
个地址空间。
对应的地址是:
40H
,41H
,42H
,43H
这里有一张 十进制(Decimal)和 十六进制(Hexadecimal)的对应表格,范围是 0~20:
十进制 (Decimal) | 十六进制 (Hex) |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
10 | A |
11 | B |
12 | C |
13 | D |
14 | E |
15 | F |
16 | 10 |
17 | 11 |
18 | 12 |
19 | 13 |
20 | 14 |
A14 和 A15是无关项,组合出的4中组合会导致输出的地址有4中结局:
注意下面的译码器,输出的8个端口,只允许有一个是L,其他必须输出H:
例题:如何求取芯片1和3的地址范围:
G必须输入0(取反)输出1,译码器才可以开始工作。
要想芯片1和芯片3工作,片选CE(取反)必须输入信号0,极=即Y0输出0才可以。
芯片1的地址范围是A0到A12。
要想芯片2工作,则Y1(取反)必须输出低电平,则译码器的另外两个输出必须是两个高电平。
芯片2工作的话,A15也就是G(取反),A输入1 , B输入0 才行。
芯片2的地址范围:
片内驱两边,片外分情况考虑:
学习自:【多个存储器扩展地址计算及数据传输】https://www.bilibili.com/video/BV1AZ421E7Cz?vd_source=3cc3c07b09206097d0d8b0aefdf07958
74LS138的工作条件,G1必须是高,G2G3(取反了)必须是低,芯片才开始工作。
影响后面的是A B C的输入电平,G1G2G3一开始已经确定了。
得出的8中外部空间有规律的:第一个不同,后3位相同。
Y0输出 001的话, ABC输入是确定的,都是001,区分高位地址和低位地址的是P2.4号引脚,也就是首个四位二进制中的最后一位不确定的位,有两种取值,属于无关项。
问题来了,为什么ABC一定是第一个4位二进制中的首位呢,无关项为什么不能是第一个: