本帖最后由 wildone 于 2014-4-4 00:18 编辑
请问各位高手,
问题1:C语言中,51中断函数不在主函数里面,写在其它文件,能顺利进入中断吗?
问题2:C 语言中,51中断函数里面不写吗?这样会不会出问题?
例如 void tim0_isr (void) interrupt 1 using 1//定时器0中断服务函数
{
}
问题3:C语言中,51主函数文件里面有个全局变量unsigned char TEMP=0;,其它模块文件里面有个子函数里面有个变量如 void delay (unsigned int TEMP); 这样有影响吗?
问题4:C语言中,51主函数文件里面有个全局变量unsigned char TEMP=0; ,其它模块文件里面有个子函数里面有个变量如
unsigned char delay (unsigned int A)
{
return TEMP;
}
这样有影响吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
前两个问题大家都说了,不过问题1要注意一点,你得把包含中断程序的那个文件加入在Keil(假设你用这个)的工程中。
我补充一下问题3和问题4
问题3,如果一个函数中有一个变量与全局变量同名(设为Temp),运行时会这样处理,在进入函数前,
先保存全局变量Temp的值到堆栈中,进入函数内后就和全局变量Temp无关了,函数内只和内部定义的Temp有关,
退出函数后,将全局变量Temp的值从堆栈中还原。
- #include <stdio.h>
- unsigned int delay(unsigned int Temp ) {
- while(Temp) {
- Temp--;
- }
- printf("局部变量Temp = %u
", Temp);
- return Temp;
- }
- unsigned int Temp = 5; // 全局变量
- void main(void){
- printf("全局变量Temp = %u
", Temp);
- delay(Temp); // 调用函数,其中delay函数有个同名的变量Temp
- printf("
全局变量Temp = %u
", Temp);
- }
- /* 运行结果
- 全局变量Temp = 5
- 局部变量Temp = 0
- 全局变量Temp = 5
- */
复制代码问题4,和问题3的解决方法一样,函数内部的同名变量不会影响外部的同名变量,各算各的,里面的不会修改外面的,外面的也不会修改里面的
一周热门 更多>