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

📄 main.c

📁 很实用的单片机例程
💻 C
字号:
/**********************HL-1实验开发板例程************************
*  平台:HL-1 V6.2 + Keil U3 + STC89C52RD
*  名称:
*  公司:慧净电子科技有限公司
*  淘宝:http://shop37031453.taobao.com       
*  网站:www.hlmcu.com
*  编写:慧净
*  日期:2008-8-08
*   QQ : 121350852 398115088
*  晶振:11.0592MHZ
*  说明:免费开源,不提供源代码分析,有问题直接到慧净论坛交流
*  论坛:http://hjdz.5d6d.com
******************************************************************/
//实验目的:流模拟消防车发声
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit SPK=P2^3;    //定义喇叭端口
unsigned char frq; 

void DelayUs2x(unsigned char t);//函数声明 
void DelayMs(unsigned char t);
/*------------------------------------------------
                    定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
 TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     
 //TH0=0x00;	      //给定初值
 //TL0=0x00;
 EA=1;            //总中断打开
 ET0=1;           //定时器中断打开
 TR0=1;           //定时器开关打开
}
/*------------------------------------------------
                    主函数
------------------------------------------------*/
main()
{
 unsigned char i;
 Init_Timer0(); //初始化定时器
 while(1)
      {
   for(i=0;i<200;i++)
      {
      DelayMs(10); //延时10ms,累加频率值
	  frq=i;
	  }
   for(i=200;i>0;i--)
      {
      DelayMs(10); //延时10ms,累减频率值
	  frq=i;
	  }
          
	  }
}
/*------------------------------------------------
 uS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
 长度如下 T=tx2+5 uS 
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
 while(--t);
}
/*------------------------------------------------
 mS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
     
 while(t--)
 {
     //大致延时1mS
     DelayUs2x(245);
	 DelayUs2x(245);
 }
}/*------------------------------------------------
                 定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 
{
 TH0=0xfe;		  //重新赋值 
 TL0=frq;         //低8位值在主程序中不断累加
 
 SPK=!SPK;        //端口电平取反

}

⌨️ 快捷键说明

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