AVR闹钟蜂鸣器 不 占用时间
在10ms中断中扫描函数Buzzer();就可以了。牛吧!!!
使用方法:将全局变量 AlmCnt设置为需要报警的组数。蜂鸣器每次报警蜂鸣4次短声,再隔一长段时间,进行下一组报警;
如果 AlmCnt =3;
到时间后,蜂蜜器 Bi.Bi.Bi.Bi...Bi.Bi.Bi.Bi...Bi.Bi.Bi.Bi.完成
AlmDelay 必须也是全局变量!
/*蜂鸣器报警次数,由全局变量AlmCnt决定*/ void Buzzer(void) { static uchar n,status; if(++AlmDelay >n) { AlmDelay = 0; if(Almn!=0) { switch(status) { case 0: // 开始启动叫声 { BuzzeOn; n = 5; // 叫 50ms status =1; break; } case 1: // 关闭50ms { BuzzeOff; if(++AlmCnt>=4) { AlmCnt =0; n= 25; status =2; } else { n= 5; status =0; } break; } case 2: { --Almn; status =0; break; } } } else BuzzeOff; } }