📄 main.c
字号:
//=======================================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//=======================================================================
//============================================================
// 工程名称: ms01.spj
// 功能描述: MS01格式播放
// 文件来源:《实验仪实验指导书》,"实验三十 SACM_ms01" 第112页
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.4
//
// 涉及的库:
// 组成文件:
// main.c isr.asm hardware.asm sacmv25.lib
//===============================================
//============================================================
// 文件名称:main.c
// 实现功能: ms01格式播放
//============================================================
#include "hardware.h"
#include "ms01.h"
#define Disable 0
#define Enable 1
#define MaxSongNum 11 // 最大语音资料文件个数
#define MaxVolume 15 // 最大音量
#define Inst_Max_Num 35 // 乐器混合数
#define Drum_Max_Num 20 // 鼓点数
#define DAC_24K 1
#define DAC_20K 2
#define DAC_16K 3
#define Manual 0
#define Auto 1
int Ret = 0; // 定义子程序返回值
//=============================================================
// 函数名称: main()
// 功能描述: ms01格式播放
// 语法格式: main()
//入口参数: 无
// 出口参数: 无
// 注意事项: 仅为用户模型
//=============================================================
int main()
{
int Key = 0; // 定义存储器键值
int SongIndex = 0; // 第一首曲子的初始化
int VolumeIndex = 8; // 初始化中音
int OnIndex=0,OffIndex=0;
int Channel=0, Instrument=0 ,Drum=0;
// 2: 20K Current(TimerA) 3: 16K Current(TimerA)
Ret = System_Initial();
SACM_MS01_Initial(DAC_24K);
SACM_MS01_Play(SongIndex,DAC1+DAC2, Ramp_UpDn_On); // 播放音乐
//SACM_MS01_ChannelOff(0);
//SACM_MS01_ChannelOff(1);
//SACM_MS01_ChannelOff(2);
//SACM_MS01_ChannelOff(3);
//SACM_MS01_ChannelOff(4);
//SACM_MS01_ChannelOff(5);
while(1)
{ // 用C语言定义主函数范围
Key = SP_GetCh();
switch(Key)
{
case 0x00:
SACM_MS01_Play(SongIndex,DAC1+DAC2, Ramp_UpDn_On); // 播放音乐
break;
case 0x01:
SACM_MS01_Stop(); // 停止播放
F_ClearWatchdog() ; //清看门狗
break;
case 0x02:
//SACM_MS01_ChannelOn(OnIndex);
//if (OnIndex++ > 5) OnIndex = 0;
SACM_MS01_Pause(); // 暂停播放
F_ClearWatchdog() ; //清看门狗
break;
case 0x03:
//SACM_MS01_ChannelOff(OffIndex);
//if (--OffIndex < 0) OffIndex = 5;
SACM_MS01_Resume(); // 继续播放
F_ClearWatchdog(); //清看门狗
break;
case 0x04:
VolumeIndex++;
if(VolumeIndex > MaxVolume)
VolumeIndex = MaxVolume;
SACM_MS01_Volume(VolumeIndex); // 音量增加
break;
case 0x05:
if(VolumeIndex == 0)
VolumeIndex = 0;
else
VolumeIndex--;
SACM_MS01_Volume(VolumeIndex); // 音量减小
F_ClearWatchdog() ; //清看门狗
break;
case 0x06: // 播放下一首歌
if( ++SongIndex == MaxSongNum)
SongIndex = 0;
SACM_MS01_Play(SongIndex, DAC1+DAC2, Ramp_UpDn_On);
F_ClearWatchdog() ; //清看门狗
break;
case 0x07: // 播放前一首
SACM_MS01_ChannelOff(0);
SACM_MS01_ChannelOn(1);
SACM_MS01_ChannelOn(2);
SACM_MS01_ChannelOff(3);
SACM_MS01_ChannelOff(4);
SACM_MS01_ChannelOff(5);
SACM_MS01_SetInstrument(2,Instrument,0); //f(channel, instrument,song command on/off)
if(++Instrument > Inst_Max_Num) Instrument=0;
SACM_MS01_SetInstrument(1,Drum,1); //f(channel, instrument,song command on/off)
if(++Drum > Drum_Max_Num) Drum=0;
//if( --SongIndex < 0)
//SongIndex = MaxSongNum-1;
//SACM_MS01_Play(SongIndex,DAC1+DAC2);
break;
default:
break;
}
Ret = System_ServiceLoop(); // 键扫描服务子程序
Ret = SACM_MS01_ServiceLoop(); // SACM-MS01 播放子程序
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -