1. 关于c语言中中断的问题
标准c语言没有中断调用机制,但是不同编译器都有相应的中断处理方式,可以使用户实现中断功能。
下面是我曾经写过的一片跟中断有关的东西,希望对你有帮助。
~~~~~~~~~~~~~~~~~~~~~~~~~
曾经设计俄罗斯方块,采取延时的方法,比如每次循环延时100毫秒,但是这个期间无法响应键盘的请求,游戏总的来说感觉卡卡的。
现在想想解决方案还真不少:
1、采取轮询的方式解决,就是每10毫秒检查一下是否有键盘请求,总的来说,这样基本上可以解决问题,而且简单易行,但每10毫秒都要检查,系统消耗太大。
2、采取中断的方式:
(1)用高级语言调用中断来处理问题。中断是cpu响应一个中断外围设备8259A的一个过程,当键盘敲击,cpu保存断点暂停执行并且跳到相应的中断处理程序继续执行,结束后根据断点再跳回来。通过这种方式可以轻松+愉快地解决这个问题。但是需要用到高级语言调用汇编,根据编译器的不同而有所差别。
(2)自己模拟中断。可以另外建立一个线程专门响应键盘的敲击,如果有敲击则打断主线程。这样做实现起来很复杂,而且涉及到不少复杂的关键技术,比如信号量之类的鬼东西~。
3、强大的vc
原来一直感觉vc只是一个编译器,现在才发现,vc也可以是一种语言。vc采取了消息映射的机制来处理外部设备的请求,比如时钟中断、键盘中断等等。通过此可以灰常灰常容易的处理外部中断。
2. 单片机c语言中的中断问题
1.void(中断函数返回类型(空型)) Time1 (中断函数名)(void(参数类型) interrupt 3 (中断号)
2: 中断条件发生时执行中断,比如void Time1(void) interrupt 3 是定时器1定时时间到发生中断,中断函数放在那里无所谓
3:void PxInt0(void) interrupt 0 中断名为PxInt0的0号中断
void PxInt1(void) interrupt 2 中断名为PxInt1的2号中断
void time0_int(void) interrupt 1 中断名为time0_int的1号中断
void time1_int(void) interrupt 3 中断名为time1_int的3号中断
4:中断的代码是你想中断执行的工作,中断的代码是根据任务,需要你自己写的
3. 什么是C语言的中断程序 有什么用啊
C语言标准语法中是没有中断的,中断是硬件在应用C语言开发时引入的,中断的实现逻辑都由硬件来完成。
下面以单片机的中断为例:一般有两种,定时器中断和外部中断。中断的提出主要是为了让CPU能及时处理突发事件以及提高代码运行效率。
举生活中的例子:现在假设你正在家里看书,突然电话响了,你会放下书,去接听电话,听完电话后,你会回去继续看书。在这里,将主程序的运行比作看书,电话铃声响了是中断触发信号,你放下书是保护现场,接听电话是在执行中断,回去看书是返回现场继续运行主程序。
当然中断还有嵌套和优先级的问题,这里就不详细来讲。
希望我的回答对你有所帮助!
4. 什么是C语言的中断程序作用是什么
中断服务程序:处理器处理“急件”,可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的,这种处理“急件”的程序被称为——中断服务程序。
当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。实现这一功能的部件称为中断系统,申请CPU中断的请求源称为中断源,单片机的中断系统一般允许多个中断源,当多个中断源同时向CPU请求中断时,就存在一个中断优先权的问题。通常根据中断源的优先级别,优先处理最紧急事件的中断请求源,即最先响应级别最高的中断请求。
5. C语言中是怎么实现中断的能提供点资料或举几个例子更好……
中断大概是这样的。。。如果有点错误不要怪我。。。我以前作过鼠标中断的东西。。现在有些想不起来了。。。所以。。。呵呵呵。。。
当程序运行到中断条件的时候,会向CPU发信号改变优先级(原先运行的东西会放进哪个特定的地方的,作保存),以发出中断的那段程序作为最高优先,执行完成后再由执行另外的。。。建议你去看看汇编。。。哈哈哈。。。我没学过的。。。
C中实现中断是用了一个函数:geninterrupt(...)
这个“...”是个16进制的数字,是中断号,像鼠标中断号就是0x33
还要用到类似汇编里寄存器模样的变量:如_AX,_BX,_CX,_DX...不同的值功能不同。。。哎呀,我都忘完了。。。建议去查下geninterrupt()的用法就OK了。。。
6. C语言中的interrupt是怎么回事
二楼的说得很对。它是一个中断处理函数,与一般的函数的区别在于他被调用的方式。一般的函数是由其上一层函数调用而得到执行。而中断函数是是外围设备触发它执行的。比如说:spi接收到一字节的数据、adc采样完成、定时器发生溢出等等。一旦这些事件发生了,只要中断处于使能状态,就会触发对应的中断。
不管主程序执行到什么地方,cpu都会暂停它并立即执行这种中断处理函数。中断处理函数执行完成后又恢复之前的程序位置继续执行。
中断的产生,不是由调用引起的,是由外界触发的。就像,有人敲门,你就要去开门,这不等于你去开门了,就一定有人敲门。
另,中断函数不能被直接调用,否则会出错。
7. c语言中断
标准c语言没有中断调用机制,但是不同编译器都有相应的中断处理方式,可以使用户实现中断功能。
下面是我曾经写过的一片跟中断有关的东西,希望对你有帮助。
~~~~~~~~~~~~~~~~~~~~~~~~~
曾经设计俄罗斯方块,采取延时的方法,比如每次循环延时100毫秒,但是这个期间无法响应键盘的请求,游戏总的来说感觉卡卡的。
现在想想解决方案还真不少:
1、采取轮询的方式解决,就是每10毫秒检查一下是否有键盘请求,总的来说,这样基本上可以解决问题,而且简单易行,但每10毫秒都要检查,系统消耗太大。
2、采取中断的方式:
(1)用高级语言调用中断来处理问题。中断是cpu响应一个中断外围设备8259A的一个过程,当键盘敲击,cpu保存断点暂停执行并且跳到相应的中断处理程序继续执行,结束后根据断点再跳回来。通过这种方式可以轻松+愉快地解决这个问题。但是需要用到高级语言调用汇编,根据编译器的不同而有所差别。
(2)自己模拟中断。可以另外建立一个线程专门响应键盘的敲击,如果有敲击则打断主线程。这样做实现起来很复杂,而且涉及到不少复杂的关键技术,比如信号量之类的鬼东西~。
3、强大的vc
原来一直感觉vc只是一个编译器,现在才发现,vc也可以是一种语言。vc采取了消息映射的机制来处理外部设备的请求,比如时钟中断、键盘中断等等。通过此可以灰常灰常容易的处理外部中断。