51单片机里的定时中断服务程序能调用用户自己编写的子程序么?我怎么用KEIL编译出现两个警告?

***WARNINGL15:MULTIPLECALLTOSEGMENTSEGMENT:?PR?_VALUEDISPLAY?START1CALLER1:?C_C51STAR... *** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_VALUEDISPLAY?START1
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER1?START1
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_WRD?LCD
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?TIMER1?START1

高手帮忙,谢谢。。。
展开
 我来答
百度网友6968e846db
2007-09-04 · TA获得超过228个赞
知道答主
回答量:113
采纳率:0%
帮助的人:90.8万
展开全部
WARNING L15: MULTIPLE CALL TO SEGMENT

这个问题必须注意,可能引起程序冲突,假设你用于自动化领域,则可能导致信号产生尖峰。 产生这一警告的一个根源是:你在主循环里调用了一个函数(如aaa),而在中断服务函数里,你用调用了这个函数(如aaa)。这样当主循环运行到该函数中是,一旦产生中断,则在中断里又再次调用该函数!这时,很可能出错! 避免这种情况的方法很多:如,在进中断的时候置需调用该函数的标志,而在主循环中调用该函数

你可以在中断函数设置标志 FLAG_Display = 1;

在主函数里判断这个标志:
if(FLAG_Display)
ValueDisplay();
更新后,清除显示标志: FLAG_Display = 0;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式