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

来源:百度知道 编辑:UC知道 时间:2024/05/20 03:30:58
*** 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

高手帮忙,谢谢。。。

WARNING L15: MULTIPLE CALL TO SEGMENT

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

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

在主函数里判断这个标志:
if(FLAG_Display)
ValueDisplay();
更新后,清除显示标志: FLAG_Display = 0;