51单片机return怎么用?单片机return的用法

来源:本站
导读:目前正在解读《51单片机return怎么用?单片机return的用法》的相关信息,《51单片机return怎么用?单片机return的用法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《51单片机return怎么用?单片机return的用法》的详细说明。
简介:本文主要讲了单片机return的用法,下面一起来学习一下:

函数写法1:

u8 is_timeout(tick start_time, tick interval)

{

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

}

函数写法2:

u8 is_timeout(tick start_time, tick interval)

{

u8 status;

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

return status;

}

函数调用方式:

if (is_timeout(start_time, 1000))

{

do_something();

}

问题:在有中断应用的平台上,使用函数写法1可能会造成if语句判断不正确。明明不到1000ms时间,却进入了do_something()。

分析:在51平台,默认情况下函数的调用、中断的切换,并不会将被打断函数的参数、局部变量压入栈,而是存储在固定存储区中。如果在执行return之前恰好需要去执行中断,则51的参数和局部变量值是可以被保存在固定存储区的,而中间数据(如return方式1中,需要返回的值)是不能被保存的,当中断返回后,无法正确获得先前的中间数据,而直接将不定数据返回,造成程序逻辑出错。而我们将return方式改为方式二,则可以保留参数、局部变量,返回正确的值,保证程序逻辑正确。

提醒:《51单片机return怎么用?单片机return的用法》最后刷新时间 2024-03-14 00:52:21,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《51单片机return怎么用?单片机return的用法》该内容的真实性请自行鉴别。