[問題] 變數問題
sorry~之前那篇問得有一點攏統,重寫一下問題...
程式如下.
程式正確時,test會因為0x0130, while跳開而完成case0.
我將
printf("\r\n%04X",test);
加在
while(test < x0130);
下面
程式不正確時,test會為0x0100,且while跳開,完成case0.
問題就在........為什麼 test有0x0100, while會跳開呢?
後來, 我又加了
while(test < x0130);
在
while(test < x0130);
後面,
此問題就不再發生了...
雖然這是一個解決方法,但是原因一直找不到....
感覺好像是中斷在test=0x0100先跳回主程式,讓case0先完成,
資料又進來了,又跳到中斷將test計數完(資料會一直進來)
test 我宣告全域變數耶? why?
理論上,中斷跳回,應該會卡在while等, 因為沒有大於0x0130..
但printf test 卻顯示最後是0x0100.....
一直想不通!! 這現象是偶然發生,不是一直發生...
================================
主程式
case '0' :
test =0;
while(test < x0130);
break;
串列函式
static void Serial_Port_ISR (void) interrupt 4
{
/* Received data interrupt. */
if (RI)
{
RI = 0;
if (upload == 1)
{
XBYTE[test] = SBUF;
test++;
}
}
else
{
if (((r_in - r_out) & ~(RBUF_SIZE-1)) == 0)
{
rbuf [r_in & (RBUF_SIZE-1)] = SBUF;
r_in++;
}
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.236.8
※ 編輯: BlueFeel 來自: 114.32.236.8 (11/22 13:43)
推
11/23 10:17, , 1F
11/23 10:17, 1F
→
11/23 10:17, , 2F
11/23 10:17, 2F
→
11/23 10:18, , 3F
11/23 10:18, 3F
→
11/23 13:24, , 4F
11/23 13:24, 4F
→
11/23 13:25, , 5F
11/23 13:25, 5F
→
11/23 13:26, , 6F
11/23 13:26, 6F
→
11/23 13:27, , 7F
11/23 13:27, 7F
→
11/23 13:29, , 8F
11/23 13:29, 8F
→
11/23 13:35, , 9F
11/23 13:35, 9F
→
11/25 21:32, , 10F
11/25 21:32, 10F
→
11/25 22:30, , 11F
11/25 22:30, 11F
→
11/25 22:30, , 12F
11/25 22:30, 12F
→
11/25 22:33, , 13F
11/25 22:33, 13F
→
11/25 22:33, , 14F
11/25 22:33, 14F
→
11/25 22:56, , 15F
11/25 22:56, 15F
→
11/25 22:56, , 16F
11/25 22:56, 16F
→
11/25 22:57, , 17F
11/25 22:57, 17F
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章