<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 關(guān)于51單片機(jī)C編程 return語句的使用

          關(guān)于51單片機(jī)C編程 return語句的使用

          作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          案例:

          函數(shù)寫法1:

          本文引用地址:http://www.ex-cimer.com/article/201611/322146.htm

          u8is_timeout(tickstart_time,tickinterval)

          {

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

          }

          函數(shù)寫法2:
          u8is_timeout(tickstart_time,tickinterval)

          {

          u8status;

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

          returnstatus;

          }

          函數(shù)調(diào)用方式:

          if(is_timeout(start_time,1000))

          {

          do_something();

          }

          問題:在有中斷應(yīng)用的平臺上,使用函數(shù)寫法1可能會造成if語句判斷不正確。明明不到1000ms時間,卻進(jìn)入了do_something()。

          分析:在51平臺,默認(rèn)情況下函數(shù)的調(diào)用、中斷的切換,并不會將被打斷函數(shù)的參數(shù)、局部變量壓入棧,而是存儲在固定存儲區(qū)中。如果在執(zhí)行return之前恰好需要去執(zhí)行中斷,則51的參數(shù)和局部變量值是可以被保存在固定存儲區(qū)的,而中間數(shù)據(jù)(如return方式1中,需要返回的值)是不能被保存的,當(dāng)中斷返回后,無法正確獲得先前的中間數(shù)據(jù),而直接將不定數(shù)據(jù)返回,造成程序邏輯出錯。而我們將return方式改為方式二,則可以保留參數(shù)、局部變量,返回正確的值,保證程序邏輯正確。



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();