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

📄 music.c

📁 用凌阳单片机IDE软件所写的音乐放音程序
💻 C
字号:

//*************************************************************************//
//
//    Function    : 乐声
//    MCU         : PIC16f630
//    Version     : 1.0
//    Start Date  : 2008/4/02
//    Finish Date : 2008/4/03
//    Author      : caizb
//
//*************************************************************************//

#include 	<pic.h>			//Common head files
#include 	"define.h"

  __CONFIG(INTOSCIO & MCLRDIS & PWRTEN & BORDIS & WDTDIS );	//配置位

//********************** 中断服务程序 ********************************************
//声音产生.
//*******************************************************************************
void interrupt time_mu(void)
{
//TMR1做声音
	TMR1L=m_music_L;		//重置计时器初值,以产生一定频率
	TMR1H=m_music_H;
	TMR1IF=0;
	if(!stop_f)
		SOUND=!SOUND;
}


//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//  上电初始化
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void 	init(void)
{
	TRISA=0xff;
	TRISC=0;	//
	PORTC=0;
	T1CON=1;		// 1/1 timer1 on
	TMR1IF=0;
	TMR1IE=1;
	PEIE=1;
	OPTION=0x87;
	CMCON=0xff;	
	T0IF=0;	//清除TMR0的中断标志
	INTF=0; //清RB0中断
	T0IE=0;	//TMR0中断允许
	GIE=1;	//总中断允许
}

fSYS()
{
	if(T0IF)
	{
		T0IF=0;
		fre_time++;
		if(fre_time==m_music_long)
		{
			ONE_S_F=0;
			fre_time=0;
			stop_f=0;
		}
	}
}	

//************************ 主程序 *************************//
void main()
{
	init();
	ONE_S_F=0;
	while(1)
	{
		for(n=0;n<79;)
		{
			if(!ONE_S_F)
			{
				s_reg=M_MUSIC[n]&0x0f;
				m_music_long=music_long[s_reg];
				s_reg=(((M_MUSIC[n]&0xf0)>>4)<<1);
				m_music_H=music_15[s_reg];
				TMR1H=m_music_H;
				s_reg++;
				m_music_L=music_15[s_reg];
				TMR1L=m_music_L;
				ONE_S_F=1;
				n++;
			}
			fSYS();			
		}

		for(n=0;n<100;)
		{
			if(!ONE_S_F)
			{
				s_reg=M_MUSIC1[n]&0x0f;
				m_music_long=music_long[s_reg];
				s_reg=(((M_MUSIC1[n]&0xf0)>>4)<<1);
				m_music_H=music_15[s_reg];
				TMR1H=m_music_H;
				s_reg++;
				m_music_L=music_15[s_reg];
				TMR1L=m_music_L;
				ONE_S_F=1;
				n++;
			}
			fSYS();			
		}
		
		for(n=0;n<51;)
		{
			if(!ONE_S_F)
			{
				s_reg=M_MUSIC2[n]&0x0f;
				m_music_long=music_long[s_reg];
				s_reg=(((M_MUSIC2[n]&0xf0)>>4)<<1);
				m_music_H=music_15[s_reg];
				TMR1H=m_music_H;
				s_reg++;
				m_music_L=music_15[s_reg];
				TMR1L=m_music_L;
				ONE_S_F=1;
				n++;
			}
			fSYS();			
		}
	}
}

⌨️ 快捷键说明

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