|
(我可能發(fā)錯區(qū)了,能不能麻煩管理幫我移到問答區(qū))
最近做項目,遇到了一個非常神奇的事情。ms_up_flag 在定時器中斷中每1ms彈出一起,軟件置0,然后執(zhí)行下面的代碼。
調(diào)式的時候發(fā)現(xiàn),只要if(p1_w_cnt<p1_w_s1_v)這個判斷的{}里面有任何內(nèi)容,那么按鍵檢測函數(shù)便會失效。
為了排除其它因素的影響,我重新聲明了一個變量xxx,把所有無關(guān)代碼刪掉,這個變量在任何地方都是沒有用到的,只在if(p1_w_cnt<p1_w_s1_v)判斷內(nèi)執(zhí)行一個賦0操作。
現(xiàn)在的情況是,我只要把這一句備注了,按鍵檢測正常,只要這一行不備注,按鍵檢測就無法執(zhí)行。但xxx=0這句代碼和其它任何代碼都沒有任何關(guān)連。
百思不得其解,望各位提供思路、討論排查原因,感激。
目前已知情況:
單片機(jī)沒有死機(jī),因為其它程序段的倒數(shù)能夠正常進(jìn)行。已測試過keil不同的代碼優(yōu)化級數(shù)無解
#define p1_w_s1_v p1_w[1]
u16 xdata jg1_cnt=0,p1_w_cnt=0;
void softtimer()
{
if(ms_up_flag)
{
ms_up_flag=0;
if(KV2_cnt_flag|KV4_cnt_flag|KV8_cnt_flag)
{
KV_LP_counter++;
}
if(mode==m_zl&&gear>0)
{
if(p1_w_cnt<p1_w_s1_v)
{
xxx=0;
}
}
}
|
|