单片机---控制蜂鸣器以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口电平的翻转,继电器来回切换,发出咔哒咔哒声音*/
	}
}

  

posted @ 2015-04-19 19:37  zhaoyang16  阅读(666)  评论(0编辑  收藏  举报