Re: [問題] (8051 C語言) 外部中斷問題。

看板Electronics作者 (270度的鳥顧之相)時間19年前 (2007/02/14 20:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/6 (看更多)
※ 引述《fmdjyl (小D(滴))》之銘言: : 經由下午看書和前輩的指導後~給予我自己答案~ : 我原本1的意思是.我進入 "外部中斷0"時,因為我是要停止(讓程式跑回最初狀態) : 如果用goto的話~怕會讓暫存器會一直堆疊我未完成的資料. : 但經由前輩指點說: 如果是有WatchDog的IC~就能讓軟體RESET... : 否則方法也就如Magicx前輩所說:就在"外部中斷0"設一個旗標. : 然後在主程式再做判斷.. : 只是方法2的不好的地方在於~我是按STOP鍵就要讓整個程式跑回最初~ 倒也不是不好啦...可能你前面沒把問題講清楚..."你的stop是要重置" "而不是暫停在那..一但按下start..程式繼續執行" <--這是我原來的意思 : 但何時會按STOP不知道~~所以得再每個主程式都得一直加判斷有無進入"外部中斷0" : 但用於 switch case:的話~~好像就不用一直狂寫判段式~ : 只要在最後面寫一段就ok~~ : 想法如下: 如有錯誤請高手指教~ : ---------------------------------------------- : void stop() interrupt 0 : { : fg=1; : } : main() : { : init() : while(1) : { : switch(temp) : { : case 1: : ........ : break: : case 2: : ........ : break: : } : if(fg=1) : { : fg=0; : return; ^^^^^^^ 我還是不太懂你switch的用意...? 而你這個return ...應該是會跳出while(1)..繼續往下執行喔 這樣應該沒有重置...而是結束...所以你的reset應該是寫在本來的 int0中斷函式裡 : { : }//while : }//main : --------------------------------------------- : ※ 引述《Magicx (270度的鳥顧之相)》之銘言: : : 用while()檔 : : 聽不懂你意思= = : : 水啦! that's right! : : 參考看看.... : : unsigned char global_flag=0; : : void stop() interrupt 0 : : { : : global_flag=1; : : } : : void start() interrupt 2 : : { : : global_flag=0; : : } : : void main() : : { : : while(1) : : { : : //你要做的事 : : while(global_flag==1); : : } : : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.175.204.164
文章代碼(AID): #15ql-Gm2 (Electronics)
討論串 (同標題文章)
文章代碼(AID): #15ql-Gm2 (Electronics)