51单片机蜂鸣器发出1KHz的信号的c语言程序

利用T1的中断来使P1.7控制蜂鸣器发出1kHz的音频信号,

//假设晶振12MHZ,P1.7控制蜂鸣器
#include "reg51.h"
sbit FMQ=P1^7;
void main(void)
{
TMOD |= 0X10; //定时器1工作于方式1,16位定时器
TH1 = 0XFE; //定时器1定时时间=500uS
TL1 = 0X0C;
ET1 = 1; //使能定时器1中断
EA =1; //开总中断

while(1)
{
}
}

void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组
{
TH1 = 0XFE; //定时器1定时时间=500us
TL1 = 0X0C;
FMQ=!FMQ;
}追问

能给个仿真图么

追答

没有,我做实际工程的,从来不用仿真。
有网友提示,我漏了一句。
//假设晶振12MHZ,P1.7控制蜂鸣器
#include "reg51.h"
sbit FMQ=P1^7;
void main(void)
{
TMOD |= 0X10; //定时器1工作于方式1,16位定时器
TH1 = 0XFE; //定时器1定时时间=500uS
TL1 = 0X0C;
ET1 = 1; //使能定时器1中断
EA =1; //开总中断
TR1 = 1;//启动定时器1
while(1)
{
}
}

void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组
{
TH1 = 0XFE; //定时器1定时时间=500us
TL1 = 0X0C;
FMQ=!FMQ;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-02-27
通过中断的方式,使用定时器0来提供1KHz的方波,蜂鸣器引脚定义为P1.0。代码如下:
#include <reg51.h>
#define u8 unsigned char
sbit BEEP=P1^0;
void main
{
EA=1;//开总中断

IT0=1;//打开定时器0源中断允许开关

TMOD=0x01;//选择定时器0工作在方式0
TR0=1;//启动定时器0

TH1=(65536-1000)/256;//赋值,定时1ms

TL1=(65536-1000)%256;

while(1)

{;}

}
void TIM() interrupt 1
{
TH1=(65536-1000)/256;

TL1=(65536-1000)%256;
BEEP=~BEEP;//蜂鸣器引脚输出1KHz方波

}
第2个回答  2015-06-06
是要给你写程序吗
相似回答