您的位置 首页 报告

关于51单片机C编程 return句子的运用

案例:函数写法1:u8is_timeout(tickstart_time,tickinterval){return(get_diff_tick(get_tick(),start_time)>in

事例:

函数写法1:

u8is_timeout(tickstart_time,tickinterval)

{

return(get_diff_tick(get_tick(),start_time)>interval);

}

函数写法2:
u8is_timeout(tickstart_time,tickinterval)

{

u8status;

status=get_diff_tick(get_tick(),start_time)>interval);

returnstatus;

}

函数调用方法:

if(is_timeout(start_time,1000))

{

do_something();

}

问题:在有中止运用的渠道上,运用函数写法1可能会形成if句子判别不正确。分明不到1000ms时刻,却进入了do_something()。

剖析:在51渠道,默许情况下函数的调用、中止的切换,并不会将被打断函数的参数、局部变量压入栈,而是存储在固定存储区中。如果在履行return之前刚好需求去履行中止,则51的参数和局部变量值是能够被保存在固定存储区的,而中心数据(如return方法1中,需求回来的值)是不能被保存的,当中止回来后,无法正确取得从前的中心数据,而直接将不定数据回来,形成程序逻辑犯错。而咱们将return方法改为方法二,则能够保存参数、局部变量,回来正确的值,确保程序逻辑正确。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/256882.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部