51的中断函数问题

2020-01-24 11:56发布

本帖最后由 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;
                                                                }                                                                               
                                                                 这样有影响吗?
       
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
xiakang
1楼-- · 2020-01-24 15:44
 精彩回答 2  元偷偷看……
wildone
2楼-- · 2020-01-24 21:21
xiakang 发表于 2014-4-4 00:28
1,能。2,如中断发生后不清除相关标志位,将不能再次进入中断函数。3和4无影响。另外你应该自己验证一下。 ...

谢谢回答问题
第一个问题:如果能,需不需要在头文件再声明这个中断?
第二个问题:定时器工作方式2是自动重装载,不用清除相关标志位,所以这个函数是可以写空的吧?
麻烦大侠了,我也会再验证一下
takashiki
3楼-- · 2020-01-24 22:04
1、根本不能写到主函数里面,写在其他什么位置都可以。不需要在头文件再声明这个中断。
2、这个函数是可以写空。印象中,51就只有T2才需要考虑相关标志位,其他的都不用管。
3、你要注意作用域的问题,没有影响的。
4、没有影响。
xiaobendan
4楼-- · 2020-01-24 22:58
昨晚看了一点STM32的定时器,写法和51的不一样,虽然都是KEIL
不过这点挺好的,打开51的工程,直接编译,都好使,然后换STM32的工程,也直接编译,同一个软件,用起来很方便
奔四的人了,脑袋不灵了,看东西一会儿就困啊,哎
wildone
5楼-- · 2020-01-25 00:31
xiaobendan 发表于 2014-4-4 08:25
昨晚看了一点STM32的定时器,写法和51的不一样,虽然都是KEIL
不过这点挺好的,打开51的工程,直接编译,都 ...

哈哈,谢谢
wildone
6楼-- · 2020-01-25 04:32
 精彩回答 2  元偷偷看……

一周热门 更多>