当你的主程序很长的时候,把中断的操作写在主程序中不能快速的响应。例如一个外部中断在主程序的开头被触发,而你的中断操作放在主程序的结尾。而你的整个主程序的运行时间是10ms,那么你这个中断操作就延迟了10ms。如果放在中断服务程序中,不论何时发生中断,CPU将会跳到中断服务程序中去处理中断操作。这是单片机的一种并行操作方式。第二个问题:因为P0口是漏极开路的。你去看看P0口的内部结构图,再用一点点的电路知识就能分析出来。
二楼说的已经相当好了。我只是想在补充一些,主函数内是不能写中断服务程序----函数内是不能再定义函数的,中断服务程序也是一个函数。还有计算机中,设置中断就是为了达到实时响应,如果你只在中断程序中设置一个标号,然后把中断的操作写在其他函数中就不能快速的响应中断,而失去了中断的意义了。如你把定时器设为1ms中断一次,在中断服务程序用一个标号来表示有中断产生,然后在其他函数中执行中断的操作,又假如其他函数执行的时间需要10ms那么也就11ms才执行一次中断,从而失去了中断的意义了。2:因为P0口是漏极开路的。与你所想的也许有很大的区别。呵呵!希望可以帮到你!
首先为这个你要调用的c文件写一个头文件,比如这个文件叫fun.c,那你可以写一个叫fun.h的头文件。这个头文件的内容是fun.c文件里的函数声明。接着把fun.c加入你的项目里。下一步在主函数的上面用#include "fun.h"把头文件包含进来。
就像电脑关机与待机的区别