串口控制蜂鸣器

题目:通过串口助手发送1,蜂鸣器以400ms频率发声;发送2,以200ms频率发声;发送3,以100ms频率发声;发送4,蜂鸣器不发声。

#include"reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit buzzer=P0^0;
u16 a;
u16 b;

void delay(u16 i)    //延时函数 1ms
{
	u8 j;
	while(i--)
	{
		for(j=0;j<115;j++);
	}	
}

void usart_init()   //串口初始化函数
{
	SCON=0x50;      //配置scon寄存器 sm1=1,REN=1
	EA=1;          //中断总允许位
	ES=1;          //串口中断允许位
}

void TIM_init()        //定时器初始化函数
{
	TMOD=0X20;        //配置TMOD寄存器 定时器T1 方式2
	TH1=TL1=0Xfd;     //波特率为9600
	TR1=1;            //开启定时器
}

void main()           
{
	usart_init();
	TIM_init();
	while(1);
}

void usart() interrupt  4      //中断函数
{
	RI=0;                    //RI复位
	a=SBUF;           
	SBUF=a;
	while(!TI);               //判断TI
	TI=0;
	switch(a)
	{
		case(1):b=200;break;
		case(2):b=100;break;
		case(3):b=50;break;
		case(4):b=0;break;
	}
	buzzer=0;
	delay(b);
	buzzer=1;
	delay(b);
}

在这里插入图片描述

串口助手

在这里插入图片描述

元器件

COMPIM

AT89C51(AT89C52)

发布了11 篇原创文章 · 获赞 3 · 访问量 278

猜你喜欢

转载自blog.csdn.net/weixin_44871327/article/details/104642808