先说明一下现象,我用的是PIC16F887,用INT(RB0)中断,下降沿触发,采样一个方波信号频率在1HZ左右,然后在中断里,将一个LED的IO口取反,LED采用低电平驱动的方式。发现IO口的波形如图一:闪的频率是对的,但是波形不对。是不是读写修改的问题啊?
测试的程序:
void INT_Init(void)
{
ANS12 = 0;
TRISB0 = 1;
RBPU = 0;
WPUB0 = 1;
INTEDG = 0; //下降沿触发
INTE = 1;
INTF = 0;
}
void main(void)
{
INT_Init();
PEIE = 1;
GIE = 1;
TRISD7 = 0;
//TRISD6 = 0;
RD7 = 1;
//RD6 = 1;
while(1);
}
void interrupt ISR(void)
{
if(INTF)
{
INTF = 0;
RD7 = !RD7;
}
}
|