winnie 发表于 2009-3-28 10:52:45

开关中断时产生的问题

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:04

程序在   while(T0IE != 1);出不来了
if(chang_in == 1)
{
   do
   {
    TMR0 = tonum;
    T0IE = 1;
   }
   while(T0IE != 1);

改成
while(chang_in == 1)
   {
    TMR0 = tonum;
    T0IE = 1;
   }
会好一些
页: [1]
查看完整版本: 开关中断时产生的问题