用PC-81微机开发单片机

🏠 首页 《无线电》杂志 1991年 🔗 第3期 🔗 第26页 分类:无线电技术自学经验交流 🔗 卫小鲁 🔗

开发单片机一般使用专用开发装置。在不具备这些条件时,我们可以把廉价的PC-81微机稍加改装构成一具简易开发装置,适用于开发量不大的情况使用。

开发电路原理

图1是开发电路原理图。其中左上角为一待开发的单片最小系统,MP为单片机,A为2 kB EPROM 2716的24线IC插座。B为一个由同样插座改制成的EPROM仿真插头。开发时,把B插入A中,使单片机系统总线及5V电源线通过B引到与EPROM 2716管脚兼容的2kB RAM芯片6116(D1)的对应引脚。而D\(_{1}\)作为PC-81(虚线以下部分)的扩展RAM,其地址总线、数据总线、片选线(CE-)和写入线WR-)可通过D2(三态总线收发器74LS-245)、D3、D4(三态总线驱动器74LS244)与PC-81系统总线沟通。操作时,断开2×2开关K1,接通4×2开关K2,通过PC-81键盘用POKE、PRINT-PEEK语句可把单片机的应用程序机器码装入扩展RA-M6116(1),并在监示器屏幕上检查D1任一地址中的内容以及修改这些内容。程序装入后,断开K2,合上K1,PC-81总线与D1的联系切断,而单片机就执行D1中的程序。关断K1合上K2,修改直至调试通过单片机程序。将此程序写入EPROM2716后,插入插座A中,即完成开发工作。

图1
图1 🔍原图 (1381×1692)

PC-81的改装原理和方法

FC-81内存RAM仅2kB,位于4000H至47FFH。它仅用15A、14A、10A作内存地址译码线,由C4005形成0RAMCS-和1RAMCS-选片信号选前后1kB RAM。因未用11A、12A、13A,故重复占用了许多地址。为了扩展RAM,应在PC-81中增加一片3-8线译码器74LS138(图1中的D5)。主机的0RAMCS-、1RAMCS-通过 R5,R6接到D5的A、B端,11A接C端,输出2Y、1Y端上引出0RAMCS′-和1RAMCS′-来选通主机内前1kB和后1kB 2114 RAM,而5Y、 6Y端输出(经二极管V4、V5)RAMCS-信号,用它选通扩展RAM D1。这样原机内存仍占4000 H~47 FFH区,扩展RAM占4800~4 FFFH区(此时11 A=1)。RAMCS-=0时,选中D1,D2、D3及D4均开通,使PC-81可读写D1。 RAMCS-=1,D2、D3及D4均挂断,PC-81总线与单讲机总线隔离,二者不会互相干扰,此时单片机可以运行D1中的程序。

D2、D3及D4可由单片机电源G1或PC-81电源G2供电,V0、V1、V3用来使G1和G2隔离。为减小正向压降,它们用锗三极管按图1下方所示接成。当G1和G2均断电时,3V外接电池通过V2给6116的Vcc、CE-、OE-、WR-供电前,一定要先断开K2。以防止断电时的瞬态干扰破坏6116中的内容。

制作与调试

所有器件均可从电子器材商店购到。V1、V2可用3A×21等,V0、V3用3 AX81等。K1、K2为小型拨动开关。EPROM仿真插头B由IC插座在插口端焊上导线自制。D1~D4均用插座安装。这几块IC与相关之器件引线较多,如自制电路板有困难可利用万用线路板或面包板连接各元件。

PC-81机内改装方法如下:打开机盖,电路板左侧C4005下方有一排10个电阻,见图2所示。其中左边二个为680Ω。用外壳接地的小功率烙铁焊下此二电阻,上端焊孔为b、a,对应1RAMCS-和0RAMCS-,下端焊孔为b′、a′,对应1RAMCS′-、和0RAMCS′-。射频调制盒下方的两个二极管也要焊下,二极管的正极焊孔为RAMCS-。按图3自制一小块电路板,板上装74 LS 138、R4以及刚才拆下的二极管(用作V4、V5)和电阻(作R5、R6)。11A、14A的焊孔可在Z80A的1脚和4脚上方找到。把小电路板的各引出端和PC-81电路板对应端按图3一一接好。PC-81的地址、数据总线均可在电路板上方找出对应焊孔,用导线一一焊好引出。因引线较多,须逐一仔细校对并作好标记。然后把它们和扩展RAM口的各线一一接妥。全部接线完成后经检查无误,即可按以下步骤调试。

图2
图2 🔍原图 (523×544)
图3
图3 🔍原图 (632×296)

断开K2,B不插入A,接通PC-81电源,应正常工作。如有屏幕不显示、叫声不停等,说明PC-81和外扩RAM的总线有错接或短路存在,必须仔细检查排除。然后运行小程序:

10 FOR I=18421 TO 18442

20 PRINT I;“—”;PEEK I

30 NEXT I

屏幕上将显示18421至18442RAM单元地址及数据。其中1832至18442因扩展RAM(D1)总线挂断,其显示数据应为255。说明扩展选片电路正确。合上K2,运行以下程序:

10 FOR I=18432 TO 20479

20 POKE I,0

30 PRINT PEEK I;

40 NEXT

50 STOP

屏幕将逐行显示0,满后用CONT继续显示,如能全部显0至结束,说明PC-81至扩展RAM的读写功能完全正常。在芯片良好的情况下,若某些单元不为0,则可能是某地址线有断路或接触不良现象,必须排除。正常后即可向D1中写入单片机应用程序。因POKE、PEEK只能使用十进数,为避免逐字把单片机机器码指令转换为十进数的麻烦,可利用以下程序直接输入十六进机器码:

10 PRINT“BEGIN ADDR=”,

20 INPUT U

30 PRINT U

40 PRINT “END ADDR=”;

50 INPUT V

60 PRINT V

70 FOR I=UTO V

80 A=I-18432

90 PRINT I;“-”;

100 DIM B $(1,2)

110 INPUT B$ (1)

120 W=(CODE B$(1,1)-28)*16+CODE B$(1,2)-28

130 POKE I,W

140 X=PEEK

150 PRINT X;“---”,

160 GOSUB 210

170 GOSUB 330

180 SCROLL

190 NEXT I

200 STOP

210 H=INT(A/4096)

220 C=A-4096*H

230 D=INT(C/256)

240 E=C-256*D

250 F=INT(E/16)

260 G=E-16*F

270 H=H+28

280 D=D+28

290 F=F+28

300 G=G+28

310 PRINT CHR$H: CHR$D; CHR$F;CHR$G;“H-”;

320 RETURN

330 Y=INT(X/16)+28

340 Z=X-16*(Y-28)+28

350 PRINT CHR$Y;CHR$Z;“H”

360 RETURN

运行后,屏幕显“BEGIN ADDR=”,此时以十进数输入单片机程序相对于PC-81的起始地址(最小为18432)并显示,下行显示“ENDADDR=”后,输入程序终了地址(最大为20479),显示后,接着从起始地址起显示程序地址相对PC-81的值及“-”号,输入该地址的二位十六进制机器码数据后,将随2显示此码的十进制数、“---”,单片机的十六进制程序地址、“—”已打入6116中此地址中的十六进制数据。并显示下一地址,键入下一数据,直至全部程序均输入6116中。显示格式如下例:

18432-0---0000H-00H

18433-124---0001H-7CH

若需要修改个别单元,直接用POKE M,N和PRINTPEEK M输入进制数修改。程序指令代码输完后,断开K2,把B插入A,按住K3,合上K1,松开K3后单片机即运1个6116中的程序。(卫小鲁)