C语言中断问题
答案:2 悬赏:80 手机版
解决时间 2021-03-09 12:59
- 提问者网友:末路
- 2021-03-08 13:52
这段程序 可以吧俄罗斯方块下降速度加快 但实在不知道怎么回事
麻烦能详细解答下嘛void interrupt(*oldTimer)(void);
void KillTimer()
{
disable();
setcect(TIMER;
}
void interrupt newtimer(void)
{
*oldtimer();
TimerCounter++;
}
在知道什么意思,TimerCounter是自己定义的变量,oldtimer);
}
void SetTimer(void interrupt(*IntProc)(void))
{
oldtimer = getvect(TIMER);
disable();
enable();
enable();
setvect(TIMER,IntProc)
最佳答案
- 五星知识达人网友:神的生死簿
- 2021-03-08 15:31
)
我又看到了 传说中的 interrupt 关键字,毕竟是同一家出的,但网上大部分是精简版。他的帮助里都有。(TC里也有可能有oldTimer 中断函数
setvect 设置中断函数
这部分技术是DOS的,距今已有些久远。你下个 borland c++ 3.1,如果还能找到的话,下到那个可就不好说有没有了,borland 独有。
我又看到了 传说中的 interrupt 关键字,毕竟是同一家出的,但网上大部分是精简版。他的帮助里都有。(TC里也有可能有oldTimer 中断函数
setvect 设置中断函数
这部分技术是DOS的,距今已有些久远。你下个 borland c++ 3.1,如果还能找到的话,下到那个可就不好说有没有了,borland 独有。
全部回答
- 1楼网友:春色三分
- 2021-03-08 16:55
标准c语言没有中断调用机制,但是不同编译器都有相应的中断处理方式,可以使用户实现中断功能。
下面是我曾经写过的一片跟中断有关的东西,希望对你有帮助。
~~~~~~~~~~~~~~~~~~~~~~~~~
曾经设计俄罗斯方块,采取延时的方法,比如每次循环延时100毫秒,但是这个期间无法响应键盘的请求,游戏总的来说感觉卡卡的。
现在想想解决方案还真不少:
1、采取轮询的方式解决,就是每10毫秒检查一下是否有键盘请求,总的来说,这样基本上可以解决问题,而且简单易行,但每10毫秒都要检查,系统消耗太大。
2、采取中断的方式:
(1)用高级语言调用中断来处理问题。中断是cpu响应一个中断外围设备8259a的一个过程,当键盘敲击,cpu保存断点暂停执行并且跳到相应的中断处理程序继续执行,结束后根据断点再跳回来。通过这种方式可以轻松+愉快地解决这个问题。但是需要用到高级语言调用汇编,根据编译器的不同而有所差别。
(2)自己模拟中断。可以另外建立一个线程专门响应键盘的敲击,如果有敲击则打断主线程。这样做实现起来很复杂,而且涉及到不少复杂的关键技术,比如信号量之类的鬼东西~。
3、强大的vc
原来一直感觉vc只是一个编译器,现在才发现,vc也可以是一种语言。vc采取了消息映射的机制来处理外部设备的请求,比如时钟中断、键盘中断等等。通过此可以灰常灰常容易的处理外部中断。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯