易码技术论坛

 找回密码
 加入易码
搜索
查看: 2492|回复: 16

[演示] 一个关于TC808系统中断的问题

[复制链接]
发表于 2008-9-4 09:13:47 | 显示全部楼层 |阅读模式
帖子发错地方了...唉,一不小心发到程序语言综合版了...有人吗?
发表于 2008-9-4 09:32:23 | 显示全部楼层
也就是说,当你在程序中调用int$c006,或者int$c00a时,程式执行到此会检测键盘上的按键是否被按下,如果你按了某一个键,它就会把这个按键所对应的asc码存到A寄存器中。
发表于 2008-9-4 10:06:32 | 显示全部楼层
它们的区别是不是:在使用前者时程序暂停等按键,而使用后者时则程序继续运行(读键在后台)
基本是这样。使用后者时程序只检测一次当前按键,若按下,则将键值存入寄存器A中。若没有,则中断直接返回,执行下面的指令。

键值在A中就是指寄存器A了。
 楼主| 发表于 2008-9-4 11:06:37 | 显示全部楼层
帖子发错地方了...唉,一不小心发到程序语言综合版了...有人吗?
 楼主| 发表于 2008-9-4 11:13:55 | 显示全部楼层
哦.那像俄罗斯方块或贪吃蛇就用的是这个中断喽(我只是对这个原理不是很清楚)? 如果在BASIC中用这个中断,那寄存器A中的键值怎么读?
 楼主| 发表于 2008-9-4 11:15:16 | 显示全部楼层
比如地址是多少
发表于 2008-9-4 11:59:13 | 显示全部楼层
basic要想实现int$c006,直接用inkey$语句就行,要不想进行按键停顿,用判断199这个地址的值就行,199是按键asc码的映射地址,比如
if peek(199)=27 then .....
发表于 2008-9-4 12:03:09 | 显示全部楼层
用BASIC的话c00a这个中断不好使哦。
检测按键可以有多种方式的。去找个BASIC程序看一看就行了。
 楼主| 发表于 2008-9-4 12:13:10 | 显示全部楼层
哦,对了,是读上次按键的值!谢谢6楼提醒!
 楼主| 发表于 2008-9-4 12:24:08 | 显示全部楼层
7楼,我来试试. 可我确实不知道有哪些basic程序是边运行边检测按键(除了我上面说的两个).bas不比lav.能否提供个例子程序的名字?
发表于 2008-9-4 13:00:46 | 显示全部楼层
去GGV的下载专区找以前的BAS游戏,贪食蛇就行。
 楼主| 发表于 2008-9-4 14:14:38 | 显示全部楼层
哦,好的.  不过6楼,你说的有问题.PEEK(199)后跟的值应该是键盘的映射值,而不是按键的ASC值.
 楼主| 发表于 2008-9-4 14:15:55 | 显示全部楼层
另外,谢谢两位的点拨.
 楼主| 发表于 2008-9-4 15:18:04 | 显示全部楼层
我试了一下.用input读按键ASC码与用peek(199)读上回按键的值是不一样的.
发表于 2008-9-4 16:39:50 | 显示全部楼层
用input读按键?输入的是大写字母还是小写字母?
发表于 2008-9-4 16:55:16 | 显示全部楼层
二者之差为128.不过用input读键实在不是什么好方法。
 楼主| 发表于 2008-9-5 07:46:30 | 显示全部楼层
对不起,打错了.是INKEY.哈哈
发表于 2008-10-1 23:00:56 | 显示全部楼层
没注意,回错了区,我重回
在GVBASIC中不用调用中断,用peek就行
执行以下这段代码就明白了:
10 LOCATE 1,1: PRINT PEEK(191);" ";PEEK(192)
20 LOCATE 2,1: PRINT PEEK(193);" ";PEEK(194)
30 LOCATE 3,1: PRINT PEEK(195);" ";PEEK(196)
40 LOCATE 4,1: PRINT PEEK(197);" ";PEEK(198)
50 LOCATE 5,1: PRINT PEEK(199);
60 GOTO 10
191~198显示的是当前按下的键的扫描码
199显示的是最后按下的键扫描码
在BASIC中INKEY$相当于INT $C006
可以使某一变量等于INKEY$,如:W$=INKEY$、W=ASC(INKEY$)
W$、W中的值则为按键值

[ 本帖最后由 wehiue 于 2008-10-1 23:02 编辑 ]
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-7-19 16:44 , Processed in 0.013842 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表