比较输出模式,非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判断。然后我把中断程序屏蔽了仍然是 第二种模式 灯跟加程序时一样,闪的很快,是不是在第二种模式下不能在中断中写程序? 难道是中断中进行了计数还有用了时间 导致灯一直很快的闪? 另外请高手介绍些 这几种模式都用在什么情况下用。 怎么没人回啊?
页:
[1]