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

📄 didi.c

📁 /* 程序详细功能介绍: * 用AT89S51单片机产生“嘀、嘀、…”报警声从P3.2端口输出
💻 C
字号:
/********************************************************************
 *  主    页 :  HTTP://WWW.QLMCU.COM             				
 *                                                              
 *  程序功能 :  “嘀、嘀、…”报警声的产生
 *                                                                         
 *  应用软件 :  KEIL C                                               
 *                                                                      
 *  版    本 :  KEIL 7.06 
 *                                                         
 *  硬    件 :  WS803、WS804、WS806   
 *                                                               
 *  创建时间 :  2005-07-28
 *              
 *  注:为了有更多实用的实验程序供大家学习,部分程序参考网上的资源,
 *      在此谢谢这些无私奉献的朋友!!!       
 *                        
 ********************************************************************/  
/* 程序详细功能介绍:
 * 用AT89S51单片机产生“嘀、嘀、…”报警声从P3.2端口输出,产生频率为1KHz,
 * 1KHZ方波从P3.2输出0.2秒,接着0.2秒从P3.2输出电平信号,如此循环下去,就形成我们所需的报警声了。
 *
 * 程序设计方法 
 *(1.生活中我们常常到各种各样的报警声,例如“嘀、嘀、…”就是常见的一种声音报警声,
 * 但对于这种报警声,嘀0.2秒钟,然后断0.2秒钟,如此循环下去,假设嘀声的频率为1KHz,
 * 由于要产生上面的信号,我们把上面的信号分成两部分,一部分为1KHZ方波,
 * 占用时间为0.2秒;另一部分为电平,也是占用0.2秒;因此,我们利用单片机的定时/计数器T0作为定时,
 * 可以定时0.2秒;同时,也要用单片机产生1KHZ的方波,对于1KHZ的方波信号周期为1ms,
 * 高电平占用0.5ms,低电平占用0.5ms,因此也采用定时器T0来完成0.5ms的定时;
 * 最后,可以选定定时/计数器T0的定时时间为0.5ms,而要定时0.2秒则是0.5ms的400倍,
 * 也就是说以0.5ms定时400次就达到0.2秒的定时时间了。 
 */

#include <AT89X51.H>
unsigned int t02s;
unsigned char t05ms;
bit flag;

void main(void)
{
	TMOD=0x01;
	TH0=(65536-500)/256;
	TL0=(65536-500)%256;
	TR0=1;
	ET0=1;
	EA=1;
	while(1);
}

void t0(void) interrupt 1 using 0
{
	TH0=(65536-500)/256;
	TL0=(65536-500)%256;
	t02s++;
	if(t02s==400)
	{
		t02s=0;
		flag=~flag;
	}
	if(flag==0)
	{
		P3_2=~P3_2;
	}
}

⌨️ 快捷键说明

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