1./*-----------------------------------------------名称:喇叭论坛:编写:shifang日期::无内容:模拟警车发声------------------------------------------------*/#include<>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbitSPK=P1^2;//定义喇叭端口unsignedcharfrq;voidDelayUs2x(unsignedchart);//函数声明voidDelayMs(unsignedchart);/*------------------------------------------------定时器初始化子程序------------------------------------------------*/voidInit_Timer0(void){TMOD|=0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响//TH0=0x00; //给定初值//TL0=0x00;EA=1;//总中断打开ET0=1;//定时器中断打开TR0=1;//定时器开关打开}/*------------------------------------------------主函数------------------------------------------------*/main(){Init_Timer0();//初始化定时器while(1){DelayMs(1);//延时1ms,累加频率值 frq++; }}/*------------------------------------------------uS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5uS------------------------------------------------*/voidDelayUs2x(unsignedchart){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/voidDelayMs(unsignedchart){while(t--){//大致延时1mSDelayUs2x(245); DelayUs2x(245);}}/*------------------------------------------------定时器中断子程序------------------------------------------------*/voidTimer0_isr(void)interrupt1{TH0=0xfe; //重新赋值TL0=frq;//低8位值在主程序中不断累加SPK=!SPK;//端口电平取反}二/*-----------------------------------------------名称:喇叭论坛:编写:shifang日期::无内容:模救护车发声------------------------------------------------*/#include<>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbitSPK=P1^2;//定义喇叭端口unsignedcharfrq;voidDelayUs2x(unsignedchart);//函数声明voidDelayMs(unsignedchart);/*------------------------------------------------定时器初始化子程序------------------------------------------------*/voidInit_Timer0(void){TMOD|=0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响//TH0=0x00; //给定初值//TL0=0x00;EA=1;//总中断打开ET0=1;//定时器中断打开TR0=1;//定时器开关打开}/*-------------------------------------
单片机实现蜂鸣器警车救护车消防车声 来自淘豆网m.daumloan.com转载请标明出处.