英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: 开关中断时产生的问题 [打印本页]

作者: winnie    时间: 2009-3-28 10:52
标题: 开关中断时产生的问题
pic12f675,mplab6.30.0,hi-tech v8.01 pl3.
一共用了3个中断:tmro(计数器),tmr1(定时器),口变。
在中断程序中:口变中断且口=1时,打开计数器。计数器做指定操作,然后关闭T0IF ,T0IE 。
if(GPIF)
{
  if(chang_in == 1)  
  {
   do
   {
    TMR0 = tonum;
    T0IE = 1;
   }
   while(T0IE != 1);
  }
  else T0IE = 0;
  T0IF = 0;
  GPIF = 0;
  GPIE = 1;
}
if(T0IF)   
{
  指定操作;
  T0IF = 0;
  T0IE = 0;
}

我在主程序中:
在一条件下关中断     GPIF = 0;     GPIE = 0;  T0IF = 0;     T0IE = 0;
但是在程序应用中却发现指定操作依然在操作,不知为何?
问题,我已解决:
在主程序中:在一条件下置一标志位。在中断程序中查标志位,标志位=0,进行中断操作;=1,清GPIF ,T0IF 。
作者: winnie    时间: 2009-3-28 10:53
程序在   while(T0IE != 1);出不来了
if(chang_in == 1)  
  {
   do
   {
    TMR0 = tonum;
    T0IE = 1;
   }
   while(T0IE != 1);

改成
while(chang_in == 1)
   {
    TMR0 = tonum;
    T0IE = 1;
   }
会好一些




欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/) Powered by Discuz! X3.2