业余自制实验微机系统(续)

🏠 首页 《无线电》杂志 1987年 🔗 第210期 🔗 第5页 分类:应用电子仪器 🔗 周东进 🔗, 周高进 🔗

同时应注意CPU运行时K\(_{D}\)0~KD7应置0。这个I/O口暂时不用ROM以及CPU的读信号RD-刷新信号RFSH-、中断输入信号INT-、NMI-、暂停信号HALT-和插入等待信号。这些信号均不影响I/O装置,应该注意的是不用的信号线应尽可能加限流电阻后接高电平。限流电阻的阻值可取100kΩ~150kΩ。

“TOY—00型业余微机系统的装配并不困难,安装过电视机、收音机等电子装置的爱好者都能自己实践。这里只介绍几个应当注意的要点和经验。首先是CPU和RAM、ROM的选择和时钟频率的选择。由于本电路中未使用WAIT-信号。不能在CPU的工作周期中插入等待周期T\(_{W}\),所以考虑CPU的时钟频率和存贮器RAM的匹配问题时,应取最低的时钟频率。例如:已有Z80A和2114Z两种芯片。Z80A的时钟频率为2.2MHz,2114Z的存取时间为450μS,折算成频率为2.2MHz。这时的时钟频率应取1.625MHz。印刷电路板的制做也很重要。这里使用的是10cm×250cm的单面印刷电路板,由于板面跨线较多,部分线较长,所以在焊接时应尽量将跨线拉直。焊完后在跨线上刷一层绝缘漆或其它绝缘涂料。如果有条件应尽可能使用双面印刷板。为了使总线的接口可靠,最好在总线端口上打上φ2.5mm的铜铆钉,这样板与板之间的拼接全部用短线焊接,而且可以长期使用。为了减小MOS蕊片被静电击穿的危险,所有的电路板要安装在金属底座上。全部MOS芯片均用相应脚位的插座。MOS芯片上应在焊接完成后再插入插座上。芯片在路后焊接时应将电烙铁的接地线同时接到底座上,同时在手腕部戴上金属表带。并将导线与底座联接。

调试步骤如下:1.调时钟发生器:电路安装无误后加上+5V电源,这时测量总电流应在15mA左右。测量74LS93的Q\(_{D}\)端电压应为2.5伏左右,这说明多谐振荡器起振。如果要调振荡频率可在74LS93的QD端接上示波器观察,调整R\(_{3}\)、R4的值,可以改变振荡频率。

图1
图1 🔍原图 (884×414)

2.调试接口电路:先调整计数、显示电路。按动计数开关K\(_{2}\)时计数器应按顺序依次增长。如果计数异常应检查74LS93、74LS00的电源线上的滤波电容器是否失效或容量太小。然后调整置数显示电路,用置数开关KD0~K\(_{D7}\)置入一个数据如:10000000,然后按一下K5,这时显示器应显示同样的数据。最后检查一下地址显示器和数据显示器工作是否稳定,方法是先使两个显示器都显示出数据(可以是任何数据)这时不论开启和关闭线路板中的任何开关显示都不变。如果显示器产生误动作,在接线无误的情况下主要是电源线上的滤波系统不良,应当加大滤波电容器的容量。

3.“TOY—01”板不能单独调试,所以先不插入芯片,用万用电表的R×100或R×1K档将所有总线端口检测一遍。除两条地线外,所有端口之间均应为开路。然后将整个系统联接起来,接通电源,用万用表电压档测量数据线和地址线上的电压看能否送到“TOY—01”板的总线端口。测毕,断开电源的两根输送线,即可将两片2114插入插座内。插芯片时要防止静电击穿。先对好芯片一侧的管脚,然后用钢尺将另一侧的管脚一起推入管座按下即可。2114插好后要进行取数操作调试。先做取数操作。接通电源时,RAM内的各单元是随机数。将K\(_{1}\)0拨到总线关闭端。如D10仍亮应按一下RESET键。将K\(_{8}\)拨到读,K9拨到输入,按一下K\(_{5}\),即可将随机数读出,然后按一下K2迁移到下一个地址,将另一单元的随机数读出。读数时K\(_{D}\)0~KD7置到零位。读数操作完成后再做存数操作,将K\(_{8}\)拨到写端。按一下K1将地址置成0000H。把各单元要存放的数写在纸上,然后依次将K\(_{D}\)0~KD7置位,按动K\(_{5}\)将数据写入,写入后要迁移地址。存完后再做一次读操作,检查数据是已否正确地写入。

图2
图2 🔍原图 (687×566)

最后,将CPU插入插座内,找几条简单程序进行试验。

到此,硬件电路已经完成,现在我们可以利用它来学习Z80 CPU的各种指令和基本的编程方法。

我们来实践一段简单程序:立即寻址加法运算程序。程序和注释见附表。

图3
图3 🔍原图 (880×534)

操作过程如下,将K\(_{1}\)0拨向BUSRQ-端使总线悬空,拨动K9断开CPU输入,将K\(_{8}\)置到写入的位置上。按一下K1将地址清零。然后拨动置数开关K\(_{D}\)~KD7置入第一条指令的操作码00111110。按一下K\(_{5}\),这时数据显示器应是如下状态:

灭灭亮亮亮亮亮灭

如果显示正确,按一下K\(_{2}\)将地址迁到000000001,将KD0~K\(_{D7}\)置第一条指令的操作数00000111,按动K5,照此逐条输入。全部程序输入后,将K\(_{D}\)0~KD7全部置零位,K\(_{8}\)拨到RAM读的位置上。按下K1使地址清零后,再读K\(_{5}\),这时数据显示器应显示出刚才在该地址写入的00111110状态。如果显示正确则迁到另一地址检查。如果发现某一地址的内容有错,则将K8置于写的位置,写入一次后将K\(_{8}\)置读继续检查。检查程序无误,则将K9拨向输入,然后拨动K\(_{1}\)0开启总线,按RESET键(这是为了使CPU初始化),如果数据显示器显示出00010001则运行正确,换算成十进制数是17。

图4
图4 🔍原图 (1588×2006)

这里解释一下第三条显示指令,因为这台学习机是采用数据线直接显示,只要IORQ-端出现低电平,数据显示器就显示数据线上的内容。为了能使该机显示运行结果(即使IORQ-端呈低电平)在程序中用了OUT(n),A指令,这是一条两字节指令,所以后面必须给出一个低8位地址,这个地址只要不影响程序运行任何值都可以。尽管这种显示方式局限性很大,但也有它独特的优点。正因为是采用数据线直接显示和输入,从而避免了使初学者一开始就直接接触复杂的键盘管理和数码显示的各种硬软件。运行程序都是直接使用,这样非常便于初学者学习和理解。

当然,这个学习机并不仅仅能做7+10,这样的算术作业。在某种程度上讲这个最简单的微机系统已经能够作某些实际的自动控制了。这是一般计算器和普通仪器很难完成的任务。

本实验微机系统虽很简单,但是它可以通过进一步的扩充,使系统趋于完善,从而适应各种不同的需要。利用本系统可以组成实时程控器、实用的控制装置,特别适用于家庭自动化等方面的应用。该系统的应用还需要广大读者的积极开发,这样才能充分使微计算机在各行业的应用上发挥其作用。(续完)(周高进 周东进)