[請益] Keil C程式問題
char rx_char()
{
while(1) if(RI) break;/* 等待串列阜接收資料備妥 */
temp=SBUF;
SBUF=temp; //用來看有沒有收到訊息
RI=0; /* 清除RI旗號 */
return temp; /* 由串列阜接收資料並傳回資料 */
}
main()
{
SM0=0 ; SM1=1 ; //SM1=1,設定串列傳輸為模式1
TMOD=0x20 ; //TMOD=20H,設TIMER1為8位元自動載入定時器
TH1=TL1=0xfe ; //TH1=TL1=0FDH,設定鮑率為38400bps
TR1=1 ; //TR1=1,開始計時
REN=1 ; //串列接收致能
P0=0xc0; // 也是測試用
P1=0xc0;
buf[i]=rx_char();
while(1)if(buf[i]=='$')break; <------這個判斷式可以過
for(i=1;i<100;) <------迴圈
{
buf[i]=rx_char();
if((i==0)&&(buf[i]=='$'))
{
P0=0xf9; //測試有沒有在接收資料
i++;
buf[i]=rx_char();
}
if((i==1)&&(buf[i]=='L'))
{
P1=0xf9; //測試
i++;
buf[i]=rx_char();
}
if((i==2)&&(buf[i]=='G'))
{
i++; <---------到這個i++後 值就很奇怪
buf[i]=rx_char(); <------所以當我再呼叫副程式後
}
if((i==3)&&(buf[i]=='I')) <---使得i值不符,沒有進入{}中
{
i++;
buf[i]=rx_char();
}
我設i為int
但是上面的if判斷式執行2次之後
i的值整個變掉
一開始是01H,02H 到第三個就變成48H了好像是受到'G'的ASCII 的影響
之後回圈整個就不能動了
我一開始有用無限迴圈,但是到了G之後就沒辦法在接收訊息
i到底是發生了甚麼事?!!
尤其我的副程式rx_char()是等待訊息傳入才能接下去動作
用keil C根本無法DEBUG
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.50.16
推
08/21 19:23, , 1F
08/21 19:23, 1F
※ 編輯: aegishow 來自: 61.229.50.16 (08/22 11:45)
推
08/22 12:23, , 2F
08/22 12:23, 2F
→
08/22 12:24, , 3F
08/22 12:24, 3F
→
08/22 13:36, , 4F
08/22 13:36, 4F
→
08/22 13:36, , 5F
08/22 13:36, 5F
→
08/22 13:37, , 6F
08/22 13:37, 6F
→
08/22 13:42, , 7F
08/22 13:42, 7F
→
08/22 17:16, , 8F
08/22 17:16, 8F
→
08/22 17:17, , 9F
08/22 17:17, 9F
→
08/22 17:18, , 10F
08/22 17:18, 10F
→
08/22 17:19, , 11F
08/22 17:19, 11F
→
08/22 17:19, , 12F
08/22 17:19, 12F
推
08/22 19:08, , 13F
08/22 19:08, 13F
→
08/22 19:10, , 14F
08/22 19:10, 14F
→
08/22 19:12, , 15F
08/22 19:12, 15F
推
08/22 22:39, , 16F
08/22 22:39, 16F
→
08/22 22:39, , 17F
08/22 22:39, 17F
→
08/22 22:40, , 18F
08/22 22:40, 18F
推
08/23 02:46, , 19F
08/23 02:46, 19F
→
08/23 02:46, , 20F
08/23 02:46, 20F
→
08/25 09:10, , 21F
08/25 09:10, 21F
→
08/25 09:12, , 22F
08/25 09:12, 22F
推
08/25 12:36, , 23F
08/25 12:36, 23F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章