本人新手,刚做了一款报警灯的产品,要求闪烁的频率一样(10个产品放在一起同时上电 用肉眼在5个小时内不能看出来一个慢一个快)。选用的STC11F01单片机,核心器件是PT4115做的恒流驱动,STC产生一个高低电平控制PT4115的开关,实现闪烁。但在测试的时候发现闪烁了半个小时后 10个产品中就有的会慢一点,用肉眼就能区分出来了,不同步闪烁了。开始用12M晶振,后面换了6M的也没有改善。
#include <STC11F.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED=P1^7;
sbit buz=P1^5;
uint m ; //计数中断次数
void Init_Timer0(void)
{
TMOD|=0X01;
TH0=0X9E;
TL0=0X58;
TR0=1;
ET0=1;
EA=1;
}
void main(void)
{
P1M0=0X80;//输出模式推免
P1M1=0X00;//
Init_Timer0();
while(1);
}
void timer0()interrupt 1
{
TH0=0X9E;
TL0=0X58;
m++;
if(m==12)
{
LED=~LED;
m=0;
}
} |