电子爱好者在制作定时器等一类作品时,调整定时时间是一件非常麻烦的事,尤其对比较长的定时时间,调整时精神需高度集中,并且不能离开。本文介绍的程序,充分利用了CEC—Ⅰ的游戏插口,对计算机不进行任何改动即可构成简单实用、经济方便的“定时器时间测定”系统。它可以在屏幕上直观地显示出所测定的时间。
一、原理
在CEC—Ⅰ中华学习机上,设有一只游戏插口,它提供有三个开关量(SW0、SW1、SW2)、四个模拟量(PDL0、PDL1、PDL2、PDL3)共七个输入端口(见图1)。我们可利用三个开关量中的任意一个(本程序为SW1)进行数据采集,通过PEEK(-16287+n)或PEEK(49249+n)读出(n为开关编号,0~2)。

游戏插口(九针)的具体接线办法见图2。图2中右边的继电器为定时电路的执行部分。当继电器吸合时,SW1为高电平,此时通过S=PEEK(—16286)完成对SW1地址访问,S的值应大于128;若继电器释放,则SW1为低电平,S值小于128。这样通过程序对PEEK(-16286)的访问,并经过计时、判断、显示等过程,便可在屏幕上读出定时器的定时时间。

二、程序(清单见后)
10句 时间系数
30句 进入中文
40~90句 屏幕显示
100~110句 判断。若继电器释放则转去执行320句
200~230句 继电器吸合时间计数、显示
240句 访问SW1
300~470句 与100~270句类同,区别仅是判断继电器释放时间计数、显示
三、使用说明
将九针插头焊好引线并插入计算机游戏插口,打开计算机电源开关。键入程序,确认无误(为今后使用方便可把程序存入磁盘),即可运行程序,这时就可以进行时间测定了。
使用中如果发现计时时间不准确(计算机每分钟“嘟”叫一声),可通过改变10句X或Y的值(X的值影响开启计时时间;Y值影响关闭计时时间)进行调整,X(Y)值越大,软件的计时时间越慢,反之越快。
本文介绍的方法,可对定时器、延时器、循环定时器等装置进行时间测定。但由于计算机及所用BASIC语言的限制,软件中的计时时间存在一定的误差(尤其是秒位),使用中应给予注意,但做为一般情况下的时间测定,还是有一定实用价值的。如对程序进行修改后,还可做到当停止测定时,计算机将本次的所有测定结果显示(打印)出来,以利于分析、检查。
程序清单:
10 X=1149:Y=1121
20 X2=X/59:Y2=Y/59
3O PRING CHR$(4);“PR#3”:HOME:HGR2
40 VTAB 1:HTAB 8
50 PRINT“定时器时间测定”
60 VTAB 4:HTAB 3
70 PRINT“开启时间: 分 秒”
80 VTAB 6:HTAB 3
90 PRINT“关闭时间: 分 秒”
100 S=PEEK(-16286)
110 IF S<128 THEN 320
120 VTAB 4:HTAB 13
130 PRINT“ ”
140 FOR A=0 TO 59
150 VTAB 4: HTAB 13
160 PRINT A;
170 HTAB 19
180 PRINT“ ”
190 PRINT CHR$(7):X1=0
200 X1=X1+1
210 VTAB 4:HTAB 19
220 PRINT INT(X1/X2)
230 IF X1>X THEN 270
240 S=PEEK(-16286)
250 IF S>127 THEN 200
260 GOTO 320
270 NEXT A
300 S=PEEK(-16286)
310 IF S>127 THEN 120
320 VTAB 6:HTAB 13
330 PRINT“ ”
340 FOR A=0 TO 59
350 VTAB 6:HTAB 13
360 PRINT A;
370 HTAB 19
380 PRINT“ ”
390 PRINT CHR$(7):Y1=0
400 Y1=Y1+1
410 VTAB 6:HTAB 19
420 PRINT INT(Y1/Y2)
430 IF Y1>Y THEN 470
440 S=PEEK(-16286)
450 IF S<128 THEN 400
460 GOTO 120
470 NEXT A
(孟艾平)