關(guān)于51單片機(jī)C編程 return語句的使用
函數(shù)寫法1:
本文引用地址:http://2s4d.com/article/201611/322146.htm{
}
函數(shù)寫法2:
{
}
函數(shù)調(diào)用方式:
{
}
問題:在有中斷應(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ù)、局部變量,返回正確的值,保證程序邏輯正確。
評論