当前位置:首页 > 单片机 > 单片机
[导读]两个简单的报警程序,希望能对大家有所启发,让单片机发出更美妙的音响/************************************************ 标题: 简单报警声程序* 日期: 2008-4-30*yongsheng.gys@163.com***************************

两个简单的报警程序,希望能对大家有所启发,让单片机发出更美妙的音响

/***********************************************
* 标题: 简单报警声程序
* 日期: 2008-4-30
*yongsheng.gys@163.com
***********************************************/

#include

#include

sbitSPK = P3^4;

unsigned char frq;

void delayms(unsigned char ms)

//延时子程序

{

unsigned char i;

while(ms--)

{

for(i = 0; i < 120; i++);

}

}

void timer0() interrupt 1 using 1

{

TH0 = 0xfe;

TL0 = frq;

SPK = ~SPK;

}

main()

{

TMOD = 0x01;

frq = 0x00;

TH0 = 0x00;

TL0 = 0xff;

TR0 = 1;

IE = 0x82;

while(1)

{

frq++;

delayms(1);//改变此处可以改变报警声的节奏长度

}

}

/***********************************************
* 标题: 单片机演奏消防车的报警声音
* 日期: 2008-4-30
*yongsheng.gys@163.com
***********************************************/

#include

#include

sbitSPK = P3^4;//喇叭接到P3.4上

unsigned char frq;

unsigned char flag;

void delayms(unsigned char ms)

//延时子程序

{

unsigned char i;

while(ms--)

{

for(i = 0; i < 120; i++);

}

}

void timer0() interrupt 1 using 1

{

TH0 = 0xfe;

TL0 = frq;

SPK = ~SPK;

}

void main()

{

TMOD = 0x01;

frq = 0x00;

TH0 = 0x00;

TL0 = 0xff;

TR0 = 1;

IE = 0x82;

flag=0;

while(1)

{

switch(flag)

{case 0:frq++;break;//flag标志置0时,frq递增

case 1:frq--;break;//flag标志置1时,frq递减

}

if (!(frq^0xff)) flag=1;//当frq增加到FFH时,flag置1,准备frq递减

if (!(frq^0x00)) flag=0;//当frq递减到00H时,flag置0,准备frq递增

delayms(15); //^为逻辑异或改变此值可改变节奏

}

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭