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

📄 main.c

📁 凌阳16位单片机新版SACM_D10语音函数库
💻 C
字号:
//======================================================================
//	工程名称:	MS01_Advanced.spj
//	功能描述:	MS01音乐播放范例--高级应用
//				该范例连续播放11段音乐,并可通过按键控制,用到了MS01的所有API函数
//				IOA[2:0]连接三个按键:
//					Key1 - 切换下一段音乐
//					Key2 - 暂停/继续播放
//					Key3 - 音量增加,当音量达到最大等级(15)后变为0,如此循环
//  IDE环境:   SUNPLUS u'nSPTM  IDE 2.0.0(or later)
//	涉及的库:	CMacro1016.lib
//              SACM_D10.lib
//	组成文件:	main.c, SACM_MS01_User_C.c
//				SACM_MS01.asm, Key.asm
//				SPCE061A.h, MS01.h, Key.h
//				SPCE061A.inc, MS01.inc
//	硬件连接:	IOA0 - Key1
//				IOA1 - Key2
//				IOA2 - Key3
//	维护记录:	2006-10-16	v1.0,  by Qwerty
//======================================================================

#include "SPCE061A.h"
#include "MS01.h"
#include "Key.h"

#define SOUND_NUM	11						// 音乐段数

//========================================================================
//	主函数
//========================================================================
int main()
{
	unsigned int KeyCode;
	unsigned int VolumeIdx = 8;				// 音量等级,可在0~15之间变化,默认的音量等级为8。
	unsigned int SndIdx = 0;				// 音乐序号,初始播放第一段音乐。
	
	Key_Init();								// 初始化按键扫描程序
	SACM_MS01_Initial();					// 初始化MS01
	SACM_MS01_DAC_FIRType(DAC_FIRTYPE_3);	// 设定DAC输出滤波方式,详见MS01.h中的说明
	SACM_MS01_Play(SndIdx, DAC_1+DAC_2, RAMP_UP_DN);
	
	while(1)
	{
		*P_Watchdog_Clear = 0x01;			// 清看门狗
		SACM_MS01_ServiceLoop();			// 执行音乐解码
		
		if((SACM_MS01_Status()&STATUS_PLAY)==0)	// 当前音乐播放完毕则播放下一段
		{
			SndIdx += 1;
			if(SndIdx==SOUND_NUM)
				SndIdx = 0;
			SACM_MS01_Play(SndIdx, DAC_1+DAC_2, RAMP_UP_DN);			
		}
		
		KeyCode = Key_Get();
		switch(KeyCode)
		{
			case KEY_1:						// 按键1
				SACM_MS01_Stop();			// 停止当前音乐播放
				SndIdx += 1;				// 播放下一段
				if(SndIdx==SOUND_NUM)
					SndIdx = 0;
				SACM_MS01_Play(SndIdx, DAC_1+DAC_2, RAMP_UP_DN);
				break;
			case KEY_2:						// 按键2
				if(SACM_MS01_Status()&STATUS_PAUSE)
					SACM_MS01_Resume();	// 如果当前处于暂停状态则恢复播放
				else
					SACM_MS01_Pause();		// 如果当前处于播放状态则暂停
				break;
			case KEY_3:						// 按键3
				VolumeIdx += 1;
				if(VolumeIdx>15)			// 改变音量
					VolumeIdx = 0;
				SACM_MS01_Volume(VolumeIdx);
				break;
			default:
				break;
		}
	}
}


//========================================================================
//	中断服务程序
//========================================================================
void FIQ(void)__attribute__((ISR));
void IRQ6(void)__attribute__((ISR));

void FIQ()
{
	*P_INT_Clear = C_FIQ_TMA;				// 清中断请求标志
	SACM_MS01_ISR();						// 调用中断服务子程序
}

void IRQ6()
{
	*P_INT_Clear = C_IRQ6_TMB2;				// 清中断请求标志
	Key_Scan();								// 调用按键扫描中断服务子程序
}

⌨️ 快捷键说明

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