51的INT0中断一直是正常的,但是每次调用一个产生矩形波的函数之后,即使INT0口有中断请求单片机也不进中断程序了。我查了一下没发现该函数哪里会影响到INT0的中断,郁闷了两天了,大虾们帮忙看下吧。 产生矩形波的函数(貌似是while循环里的问题,因为我把while循环屏蔽之后中断就恢复正常了): void RectGenerator(INT8U TimeLength,INT16U Frequence,INT8U Proportion) { INT16U DiveHigh=65536-(20000/(int)Frequence*(int)Proportion); INT16U DiveLow=65536-(20000/(int)Frequence*(100-(int)Proportion)); INT32U Count=(int)TimeLength*(int)Frequence; ET0=1; PT0=1; TMOD=0x01; TR0=0; TH0=DiveHigh/256; TL0=DiveHigh%256; TR0=1; while(Count) { if(TF0&&Output) { Count--; Output=0; TF0=0; TR0=0; TH0=DiveLow/256; TL0=DiveLow%256; TR0=1; } if(TF0&&!Output) { Output=1; TF0=0; TR0=0; TH0=DiveHigh/256; TL0=DiveHigh%256; TR0=1; } } TF0=0; TR0=0; PT0=0; ET0=0; }
|