导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→讨论51单片机的keil c中断服务程序[xdgcs]

 *第43706篇: 讨论51单片机的keil c中断服务程序

  
楼 主:xdgcs 2006年10月11日10:53
 讨论51单片机的keil c中断服务程序
我最近发现用c语言编写的定时器t2中断服务程序,要访问一个全局变量数组,结果中断服务程序在调用数组时不能按照数组的真实地址访问,而是把08H当成数组的首地址,请教高手这是怎么回事啊?如何才能直接访问到定义过的全局变量啊?
  
2楼:yinshao 2006年10月11日14:07
 [原创]尝试用指针
我碰到过类似的情况,在中断过程中会出现一些意想不到的问题,让人很伤脑筋
你可以尝试定义数组后在使用时用一个指针代替数组名
  
3楼:xdgcs 2006年10月12日09:32
 [原创]
我已经试过了,但是还不行,我发现定义在bdata区的数组在中断里可以访问,其他数据段内都不可以,该怎么办呢?
  
4楼:yinshao 2006年10月13日09:25
 [原创]中断中尽量不要调用函数
还不清楚你程序的具体情况,应该不会像你说的那样吧
但是有一点就是尽量不要调用函数
  
5楼:xdgcs 2006年10月13日16:15
 求助
现在可以了,不过就和你说的一样,不能调用函数,但是我必须在中断里调用函数,请问要怎么办才可以呢?
  
6楼:kesson 2006年10月13日17:03
 中断里调用函数
中断函数必须保证是可重入函数,所以如果你用c语言来写的话,要加上reentrant关键字,这样才能保证用局部变量,另外在函数里面不要使用全局变量,传递参数用堆栈
  
7楼:xdgcs 2006年10月16日13:50
 [求助]
"中断函数必须保证是可重入函数"指的是中断服务程序还是中断服务程序里调用的函数?
还有我在系统里定义的全局变量数组,为什么有的局部变量也会使用数组内的存储单元呢?
  
8楼:kesson 2006年10月13日16:57
 re-entry
asdf
  
9楼:lzf2008 2006年10月20日10:51
 本身程序就不合理!
对于使用KEIL C 编写的程序应该来讲尽量不要在中断中调用函数,个人感觉这是程序结构的问题,同时如果不可避免要调用函数,最好是将程序直接嵌到中断中,当然要保证程序尽量短小!
  
10楼:liming316 2006年10月26日16:39
 现在有无须中断的处理器了~~
现在有无须中断的处理器了~~现在有无须中断的处理器了~~现在有无须中断的处理器了~~

>>>>>>对该主题发表你的看法

本主题贴数10,分页: [第1页]


[上一篇主题]:一个新的单片机论坛

[下一篇主题]:[分享]愿意结交在武汉做单片机的朋友