關(guān)于51單片機C編程 return語(yǔ)句的使用
函數寫(xiě)法1:
本文引用地址:http://dyxdggzs.com/article/201611/322146.htm{
}
函數寫(xiě)法2:
{
}
函數調用方式:
{
}
問(wèn)題:在有中斷應用的平臺上,使用函數寫(xiě)法1可能會(huì )造成if語(yǔ)句判斷不正確。明明不到1000ms時(shí)間,卻進(jìn)入了do_something()。
分析:在51平臺,默認情況下函數的調用、中斷的切換,并不會(huì )將被打斷函數的參數、局部變量壓入棧,而是存儲在固定存儲區中。如果在執行return之前恰好需要去執行中斷,則51的參數和局部變量值是可以被保存在固定存儲區的,而中間數據(如return方式1中,需要返回的值)是不能被保存的,當中斷返回后,無(wú)法正確獲得先前的中間數據,而直接將不定數據返回,造成程序邏輯出錯。而我們將return方式改為方式二,則可以保留參數、局部變量,返回正確的值,保證程序邏輯正確。
評論