作者Magicx (270度的鸟顾之相)
看板Electronics
标题Re: [问题] (8051 C语言) 外部中断问题。
时间Wed Feb 14 20:24:46 2007
※ 引述《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