请教C51问题

[复制链接]
3289|4
 楼主| 邓文焕 发表于 2007-2-1 10:42 | 显示全部楼层 |阅读模式
C51, TE, ck, play, se
    SEGMENT: ?PR?ACK_I2C?TEXT1
    CALLER1: ?PR?DISPLAY_INTER?TEXT1
    CALLER2: ?PR?TIME0?TEXT1
我写的程序在keil 中编译后出现了警告,不知道什么原因。怎么解决?请指点。
lixun00 发表于 2007-2-1 10:51 | 显示全部楼层

MULTICALL 多重调用,通常Keil函数不支持重入

这将有可能导致数据被破坏,或者访问外部设备错误.若你确认不会同时调用,可以不用管它
xxrrpp2000 发表于 2007-2-1 11:25 | 显示全部楼层

指示得很清楚呀~~~~

SEGMENT: ?PR?_IRCVSTR?TEXT1-----被调用的程序段
    CALLER1: ?PR?DISPLAY_INTER?TEXT1-----调用的子函数1
    CALLER2: ?PR?TIME0?TEXT1-----调用的子函数2
由于调用的子函数2是中断服务程序,因此可能出现的情况是:
当Display_Inter调用IRCVSTR时,程序在IRCVSTR中执行,此时发生中断Time0,由于中断服务函数中再次调用IRCVSTR,因此发生重入函数调用.
Keil通常不支持重入,但是也可以用,大概是reent...什么的关键字,而且需要手工设置重入堆栈,很复杂,这里不好说清楚.

以前曾经碰到过类似问题,还是尽量避免重入函数的好.
才疏学浅,一点小意见,仅供参考.
samuelyu 发表于 2007-2-1 17:54 | 显示全部楼层

不记得了;

好象是 C51 的中断服务程序,如果含内部变量,必须声明成重入的;
yongzai 发表于 2011-5-11 18:46 | 显示全部楼层
看不懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部