1楼:匿名用户
首先可以肯定,中断服务函数可以写在其他文件中,并不一定要放在main.c中。
中断服务函数如果有特定的关键字修饰,比如keil c51用interrupt,不仅可以放在任意文件中,甚至可以用static 把中断函数定义成局部的函数都没问题。
其他的,一般需要自己定义入口调用,比如某系统的定时中断入口放在0x0008地址,则在0x0008地址放一条长跳转指令,或者直接把函数的地址放在0x0008地址,这个根据系统不同,可能有不同的要求。
另外,有的c把引导程序会有一个默认的中断服务地址表,用户只需要根据系统的要求,按照一定的格式、名称定义好中断服务程序,系统就会自动调用。
c51单片机的中断操作,与直接在主函数内写入中断服务程序有什么区别?
2楼:匿名用户
二楼说的已经相当好了。我只是想在补充一些,主函数内是不能写中断服务程序----函数内是不能再定义函数的,中断服务程序也是一个函数。还有计算机中,设置中断就是为了达到实时响应,如果你只在中断程序中设置一个标号,然后把中断的操作写在其他函数中就不能快速的响应中断,而失去了中断的意义了。
如你把定时器设为1ms中断一次,在中断服务程序用一个标号来表示有中断产生,然后在其他函数中执行中断的操作,又假如其他函数执行的时间需要10ms那么也就11ms才执行一次中断,从而失去了中断的意义了。2:因为p0口是漏极开路的。
与你所想的也许有很大的区别。呵呵!希望可以帮到你!
3楼:匿名用户
当你的主程序很长的时候,把中断的操作写
在主程序中不能快速的响应。例如一个外部中断在主程序的开头被触发,而你的中断操作放在主程序的结尾。而你的整个主程序的运行时间是10ms,那么你这个中断操作就延迟了10ms。
如果放在中断服务程序中,不论何时发生中断,cpu将会跳到中断服务程序中去处理中断操作。这是单片机的一种并行操作方式。第二个问题:
因为p0口是漏极开路的。你去看看p0口的内部结构图,再用一点点的电路知识就能分析出来。
4楼:匿名用户
首先为这个你要调用的c文件写一个头文件,比如这个文件叫fun.c,那你可以写一个叫fun.h的头文件。
这个头文件的内容是fun.c文件里的函数声明。接着把fun.
c加入你的项目里。下一步在主函数的上面用#include "fun.h"把头文件包含进来。
5楼:匿名用户
就像电脑关机与待机的区别