永发信息网

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 独有。
全部回答
  • 1楼网友:春色三分
  • 2021-03-08 16:55
标准c语言没有中断调用机制,但是不同编译器都有相应的中断处理方式,可以使用户实现中断功能。 下面是我曾经写过的一片跟中断有关的东西,希望对你有帮助。 ~~~~~~~~~~~~~~~~~~~~~~~~~ 曾经设计俄罗斯方块,采取延时的方法,比如每次循环延时100毫秒,但是这个期间无法响应键盘的请求,游戏总的来说感觉卡卡的。 现在想想解决方案还真不少: 1、采取轮询的方式解决,就是每10毫秒检查一下是否有键盘请求,总的来说,这样基本上可以解决问题,而且简单易行,但每10毫秒都要检查,系统消耗太大。 2、采取中断的方式: (1)用高级语言调用中断来处理问题。中断是cpu响应一个中断外围设备8259a的一个过程,当键盘敲击,cpu保存断点暂停执行并且跳到相应的中断处理程序继续执行,结束后根据断点再跳回来。通过这种方式可以轻松+愉快地解决这个问题。但是需要用到高级语言调用汇编,根据编译器的不同而有所差别。 (2)自己模拟中断。可以另外建立一个线程专门响应键盘的敲击,如果有敲击则打断主线程。这样做实现起来很复杂,而且涉及到不少复杂的关键技术,比如信号量之类的鬼东西~。 3、强大的vc 原来一直感觉vc只是一个编译器,现在才发现,vc也可以是一种语言。vc采取了消息映射的机制来处理外部设备的请求,比如时钟中断、键盘中断等等。通过此可以灰常灰常容易的处理外部中断。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯