icando778 发表于 2011-3-10 12:27:07

比较输出模式,非PWM模式如何应用的问题

COMO1   COMOO                  说明
0          0            PB3为通用I/O引脚(OC0与引脚不连接)
0          1            比较匹配时出发OC0(OC0为原OC0的取反)
1          0            比较匹配时清0 OC0
1          1            比较匹配时置位 OC0
//用的8M的晶振,进行了1024分频,控制一个灯的亮灭,所以大约中断30次是一秒,i为计数变量,中断函数如下:
interrupt void timer0_comp(void)
{
   i++;
   if(i==30)
   {
   i=0;
   PORTB.3=~PORTB.3;
   
   }
   else
   PORTB.3=PORTB.3;
}

如果我用第一种模式灯是亮一秒灭一秒,如果我改成第二种模式,因为中断发生OC0就为原来的取反,所以在上面程序的基础上我改了下程序 在if判断中把原来的   PORTB.3=~PORTB.3;改成PORTB.3=PORTB.3; 把else中PORTB.3=PORTB.3;改成PORTB.3=~PORTB.3;就是说没到一秒,中断发生了OC0取了反,因为没到一秒我就再把它取反,取回来,如果到了一秒,因为中断时就取反我就不变。 但是这个程序它这个灯闪的非常快,即使我改变i的判断量也没效果,我觉得是没有进行if判断。然后我把中断程序屏蔽了仍然是 第二种模式 灯跟加程序时一样,闪的很快,是不是在第二种模式下不能在中断中写程序? 难道是中断中进行了计数还有用了时间 导致灯一直很快的闪? 另外请高手介绍些 这几种模式都用在什么情况下用。

icando778 发表于 2011-3-11 12:31:09

怎么没人回啊?
页: [1]
查看完整版本: 比较输出模式,非PWM模式如何应用的问题