作者fmdjyl (小D(滴))
看板Electronics
标题Re: [问题] (8051 C语言) 外部中断问题。
时间Wed Feb 14 19:51:51 2007
经由下午看书和前辈的指导後~给予我自己答案~
我原本1的意思是.我进入 "外部中断0"时,因为我是要停止(让程式跑回最初状态)
如果用goto的话~怕会让暂存器会一直堆叠我未完成的资料.
但经由前辈指点说: 如果是有WatchDog的IC~就能让软体RESET...
否则方法也就如Magicx前辈所说:就在"外部中断0"设一个旗标.
然後在主程式再做判断..
只是方法2的不好的地方在於~我是按STOP键就要让整个程式跑回最初~
但何时会按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;
{
}//while
}//main
---------------------------------------------
※ 引述《Magicx (270度的鸟顾之相)》之铭言:
: ※ 引述《fmdjyl (小D(滴))》之铭言:
: : 今天做一个实习,用两颗按监,一颗是开始键、一颗是停止键。
: : 停止键是用在INT0(外部中断)
: : 请问我该如何写在停止键按下後,就让程式完全停止呢?
: 用while()档
: : 1.在外部中断副程式里面写能跳到最外层回圈吗?
: 听不懂你意思= =
: : 2.还是在外部中断执行时,设定一个旗标。
: : 然後在主程式一直做有无进入INT0的判断吗?
: 水啦! that's right!
: : PS:其实我不知道当进入 "外部中断副程式"在那里能写些什麽?
: : 我是希望能进入 "外部中断副程式" 後就能立即跳离程式。
: : 但怕会有暂存器会一直堆叠的问题。
: 参考看看....
: 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: 220.135.117.4