单片机---控制蜂鸣器以0.5s的周期工作
1 /*采用定时的方法让继电器切换,切换频率大约为0.5s*/ 2 #include <reg52.h> //52系列单片机头文件 3 sbit Relay = P3^3; //声明单片机P3口的第4位 4 5 /*定时器T0初始化:主要是一些寄存器的配置 6 定时时间是0.25ms。 7 */ 8 void InitT0(void) 9 { 10 TMOD = 0x02; /*8位自动重装载定时器,当溢出时将TH0存放的值自动重装入TL0*/ 11 TL0 = 0x1A;//晶振11.0592MHz 12 TH0 = 0x1A; 13 TR0 = 1;//启动定时器 14 } 15 16 void main (void) /*主函数*/ 17 { 18 unsigned short int RelayDelayCnt = 0; 19 InitT0();/*调用定时器初始化函数,进行相应配置*/ 20 while (1) 21 { 22 if (TF0)/*判断定时器是否计满溢出*/ 23 { 24 TF0 = 0;/*清楚溢出标志,准备下次溢出的判断*/ 25 if (RelayDelayCnt++ >= 2000)//2000*0.25ms = 0.5s 26 { 27 RelayDelayCnt = 0;/*清计数,重新开始计数*/ 28 Relay = ~Relay;/*翻转继电器控制电平,让其切换*/ 29 } 30 } 31 } 32 }
2015-04-19
/*延时法-周期0.5s切换继电器*/ #include <reg52.h> //52系列单片机头文件 sbit Relay = P3^3; //声明单片机P3口的第4位 /*延时基准约为1ms*/ void DelayXms(unsigned short int xms) { unsigned char dly; while(xms--) { dly = 100; while(dly--); } } void main (void) /*主函数*/ { while (1) /*循环*/ { DelayXms(500);/*延时一段时间*/ Relay = ~Relay;/*IO口电平的翻转,继电器来回切换,发出咔哒咔哒声音*/ } }