⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 door_ring.c

📁 /* 程序详细功能介绍: *当按下按键P3.3
💻 C
字号:
/********************************************************************
 *  主    页 :  HTTP://WWW.QLMCU.COM             				
 *                                                              
 *  程序功能 :  “叮咚”门铃
 *                                                                         
 *  应用软件 :  KEIL C                                               
 *                                                                      
 *  版    本 :  KEIL 7.06 
 *                                                         
 *  硬    件 :  WS803、WS804、WS806   
 *                                                               
 *  创建时间 :  2005-07-28
 *              
 *  注:为了有更多实用的实验程序供大家学习,部分程序参考网上的资源,
 *      在此谢谢这些无私奉献的朋友!!!       
 *                        
 ********************************************************************/  
/* 程序详细功能介绍:
 *当按下按键P3.3 ,AT89S51单片机产生“叮咚”声从P3.2端口输出
 *程序设计方法 
 * 1. 我们用单片机实定时/计数器T0来产生700HZ和500HZ的频率,根据定时/计数器T0,我们取定时250us,
 *      因此,700HZ的频率要经过3次250us的定时,而500HZ的频率要经过4次250us的定时。 
 * 2. 在设计过程,只有当按下SP1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。 
 * 3. “叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。 
 */

#include <AT89X51.H>
unsigned char t5hz;
unsigned char t7hz;
unsigned int tcnt;

bit stop;
bit flag;

void main(void)
{
	unsigned char i,j;
	
	TMOD=0x02;
	TH0=0x06;
	TL0=0x06;
	ET0=1;
	EA=1;
	
	while(1)
	{
		if(P3_3==0)
		{
			for(i=10;i>0;i--)
			for(j=248;j>0;j--);
			if(P3_3==0)
			{
				t5hz=0;
				t7hz=0;
				tcnt=0;
				flag=0;
				stop=0;
				TR0=1;
				while(stop==0);
			}
		}
	}//...while(1)
}//...main

void t0(void) interrupt 1 using 0
{
	tcnt++;
	if(tcnt==2000)
	{
		tcnt=0;
		if(flag==0)
		{
			flag=~flag;
		}
		else
		{
			stop=1;
			TR0=0;
		}
	}
	
	if(flag==0)
	{
		t7hz++;
		if(t7hz==3)
		{
		t7hz=0;
		P3_2=~P3_2;
		}
	}
	else
	{
		t5hz++;
		if(t5hz==4)
		{
		t5hz=0;
		P3_2=~P3_2;
		}
	}
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -