目前TP—801单板机是国内使用最广泛的单板微型计算机之一。它以Z80—CPU为微处理器,为ROM留有8K字节的地址,其中0000到07FF的2k地址供监控和调试程序TPBUG-A使用,1000到17FF的PR-OM2可供EPROM2716编程器使用,0800到OFFF为PROM1,1800到1FFF留给用户扩展使用。全部应用需要四片2k字节的EPROM2716。如果改用4k字节的EPROM2732就只需要两片。我们在微机工业控制应用教学实验中由于手里有较多的EPROM2732,而且一片2732比两片2716便宜得多,所以就在不对电路进行较大改动的前提下,在TP-801单板机上增设对2732进行编程写入和读出的电路。电路简单易作,使用可靠,现将其介绍出来供大家参考。
TP-801原来使用的EPROM是2k字节的2716,它的引脚及功能分别如图1和表1所示。而EPROM2732是4k字节,它的引脚及功能分别如图2和表2。比较二者可以看出:2732的20个脚与2716的18个脚功能基本一致,不同的只是2732在编程时脉冲峰值为25V、而2716是TTL高电平。2732的18脚符合一般的片选逻辑低电平有效,而2716的28脚则在编程时为高电平。2732的第21脚为地址线A11,2716的第21脚则为+5V,但在编程过程中为+25V电源。根据这些差异,可以利用原来2716第18脚的PD/PGM逻辑来推动一个晶体管互补电路,产生高电平为25V的编程脉冲,而用片选CS\(_{2}\)和CS3通过一个与门来产生片选CE-逻辑。在地址1000到17FF时CS\(_{2}\)=0,在地址1800到1FFF时CS3=0,其逻辑关系如表3。




现在我们来看看编程时的程序:
ORG 05D3H
05D3 3E01 CCS12: LD A,01H
05E4 3E25 CCS12A:LD A,25H
05E6 D386 OUT (CTC2),A;CTC2控制字
05E8 3ECB LD A,OCBH ;时间常数
05EA D386 OUT (CTC2),A 定时26ms
05EC 3E80 LD A,80H ;PGM PULSE
05EE D38C OUT(DIGLH),A ENABLE=1
05FO EDAO LDI ;插入52ms等待
05F2 3E00 LD A,00H
05F4 D38C OUT(DIGLH),A;Q\(_{1}\)、Q2、Q\(_{3}\)
复位
05F6 3E03 LD A,03H
05F8 D386 OUT (CTC2),A;CTC2复位
05FA EAE405 JP PE,CCS12A BC-1≠0
TP-801的有关硬件电路如图3中虚线框内所示。现在来看看EPROM2716是怎样写入的。

当程序执行到地址05EA的指令D386时,CTC2开始定时每26ms发出一次ZC脉冲作为D触发器Q\(_{2}\)和Q3的CP脉冲。由于这时PGM脉冲端为低电平,故Q\(_{1}\)、Q2、Q\(_{3}\)均输出为“0”。 U34的9脚为“1”,8脚为“0”,10脚输出低电平到EPROM2716的18脚,使其仍处于读状态。 CS\(_{2}\)-经U33反相后作为Q\(_{1}\)的CP脉冲,但由于D1为“0”,故Q\(_{1}\)输出仍为“0”状态不变。当程序执行到地址05EC的指令3E80、D38C时,PGM脉冲赋能端为高电平。当片选CS2-到来时Q\(_{1}\)变为“1”,U34的9脚为“0”,10脚输出高电平到EPROM2716的18脚,使其开始写入状态。U\(_{34}\)的10脚高电平经反相后送到C-PU的WAIT-端请求CPU等待。PGM脉冲通过U29,使EPROM2716的20脚为高电平,使其选通为写入状态。这时CPU正在执行LDI指令,RAM中第一个地址2000单元的内容正送入EPROM第一个地址1000单元,如写入信号为“0”则该对应存贮单元的悬浮栅不断得到电荷而变成了“0”状态。
CTC2经26ms后发出的ZC脉冲使Q\(_{1}\)的“1”状态传递到Q2再经26ms才能使Q\(_{3}\)变为“1”,从而使EPROM2716的18脚为低电平,给果写入状态,再经U26反相后使CPU的WAIT-端为“1”,这样就结束了CPU的52ms等待过程开始执行下一条指令。指令3E00、D38C使PGM脉冲赋能端为“0”,使得Q\(_{1}\)、Q2、Q\(_{3}\)均清0。再下一条指令使CTC2复位从而开始准备好下一地址单元的写入。
为了对EPROM2732编程写入,我们增加了图3虚线框外的电路,印刷板见图4(1:1),可直接固定到单板机的背面。

因为EPROM2732的编程地址是从1000到1FFF,所以要求片选脉冲由CS\(_{2}\)或CS3提供,其正逻辑为“与”关系。 Q\(_{1}\)的CP脉冲也由它提供,以便在编程时同步产生编程脉冲和CPU等待信号。整个电路只需要在U33第12脚到U\(_{31}\)的411脚连线上打“X”处把印刷电路切断0.5mm左右,然后按虚线连结两条连线即可。
如果在地址0000到0FFF也使用一片EPROM2732只要如图5连接即可,也可将原来0800到0FFF的PROM1插座连线照图5改接即可用于地址0000的0FFF。可以把原来整控程序TP-BUG用如下块转移程序:
ORG 2E00
2E00 210000 LD HL, 0000 ;源首地址
2E03 110020 LD DE, 2000 ;目的首地址
2E06 010008 LD BC, 0800 ;字长
2E09 EDBO LD IR
2E0B C7 RS TO ;重新启动
移出到RAM区,再用上述的EPROM2732编程器写入到一片2732中,把这片2732插到图5的插座中,两片EPROM2732来构成TP-801的整个8kROM区。

如果按图5在20脚接一单刀双掷开关,还可以在PROM1插座任选使用2716或2732。原来的TP-BUG插座和PROM2插座仍可分别作为EPROM2716的TP-BUG和编程器使用。(肖邦能)