線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:954
推到 Plurk!
推到 Facebook!

8051中斷問題

缺席
cwl751005
一般會員


發表:1
回覆:2
積分:0
註冊:2012-08-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-11-22 11:13:10 IP:220.130.xxx.xxx 訂閱
我是使用KEIL C撰寫
在中斷部分處理完後便無動作
例:
void work() (這是主程序的部分)
{
......}


void INT()interrupt 4
{
while(q
{
RI=0;
while(RI==0);
GDATA=SBUF;
GDATA=GDATA&0x7f;
Mst_QUERY[q]=GDATA;
q ;
}
................
while(q
{
GDATA=(Slv_RES[q])|0x80;
SBUF=GDATA;
while(TI==0);
TI=0;
q ;
}
}

平常是在work函數中工作
在中斷處理完後便無動作了
就只能等下一個傳輸中斷產生再處理中斷
看了書籍的寫法都是處理完自動會回去
是中斷哪裡出現問題嗎?






cwl751005
一般會員


發表:1
回覆:2
積分:0
註冊:2012-08-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-11-22 15:13:58 IP:220.130.xxx.xxx 訂閱
 不好意思,已解決
是收送之後之中斷問題
重新更變編碼順序後解決
taishyang
站務副站長


發表:377
回覆:5486
積分:4552
註冊:2002-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-11-22 15:16:51 IP:114.32.xxx.xxx 訂閱
你中斷的寫法怪怪的
UART當發生中斷,程式就會跳到中斷副程式裡面
你只要判斷是RI還是TI的中斷
若是RI,就把資料存起來
若是TI,看是要在主程式清除中斷旗標,還是要再中斷裡面清除
處理完中斷後離開中斷副程式就會回到主程式



===================引 用 cwl751005 文 章===================
我是使用KEIL C撰寫
在中斷部分處理完後便無動作
例:
void work() (這是主程序的部分)
{
......}


void INT()interrupt 4
{
while(q
cwl751005
一般會員


發表:1
回覆:2
積分:0
註冊:2012-08-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2012-11-22 15:27:34 IP:220.130.xxx.xxx 訂閱
 嗯!已經發現到了
現在中斷只處理接收部分
系統時間:2017-12-16 17:19:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!