📄 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.
//=======================================================================
//========================================================
// 工程名称: ex7_MS01
// 功能描述: 利用SACM_MS01算法播放已经提供的4段乐曲,用键盘控制这4段乐
// 曲的播放,各个按键的功能分别如下:
// Key1:播放
// Key2:停止播放
// Key3:暂停当前播放乐曲
// Key4:恢复播放暂停的乐曲
// Key5:音量增大
// Key6:音量减小
// Key7:播放下一段乐曲
// Key8:播放前一段乐曲
// 涉及的库: CMacro1016.lib
// SacmV26e.lib
// 组成文件: main.c
// Key.asm, ISR.asm, Hardware.asm
// MS01.inc, Hardware.inc, Key.inc
// MS01.h, Key.h
// 硬件连接: KEYPAD的IOA7~0与COL1~8连接;IOA8与ROW连接
// DAC短接,选择音频输出
// 维护记录: 2005-10-12 v1.0
//========================================================
//========================================================
// 文件名称: main.c
// 功能描述: 利用SACM_MS01算法播放已经提供的4段乐曲,用键盘控制这4段乐
// 曲的播放
// 维护记录: 2005-09-12 v1.0
//========================================================
#include "ms01.h"
#include "Key.h"
#define CLR_WDT() (*(unsigned int*)0x7012=0x01)
#define DAC1 1
#define DAC2 2
#define Ramp_Up_On 1
#define Ramp_Dn_On 2
#define Ramp_UpDn_On 3
#define DAC_24K 1
#define DAC_20K 2
#define DAC_16K 3
#define Manual 0
#define Auto 1
#define MaxSongNum 4 // 最大语音资料文件数
#define MaxVolume 15 // 最大音量
int main()
{
int Key = 0; // 存储键值
int SongIndex = 0; // 曲子编号
int VolumeIndex = 8; // 音量
int Status_Stop = 0; // 当前是否处于停止播放状态
Key_Init();
SACM_MS01_Initial(DAC_24K, Auto);
SACM_MS01_Play(SongIndex,DAC1+DAC2, Ramp_UpDn_On); // 播放音乐
while(1)
{
Key = Key_Get();
switch(Key)
{
case 0x80: // 键1,播放乐曲
SACM_MS01_Initial(DAC_24K, Auto);
SACM_MS01_Play(SongIndex,DAC1+DAC2, Ramp_UpDn_On);
break;
case 0x40: // 键2,停止播放
SACM_MS01_Stop();
Status_Stop = 1;
break;
case 0x20: // 键3,暂停播放
SACM_MS01_Pause();
break;
case 0x10: // 键4,恢复播放
SACM_MS01_Resume();
break;
case 0x08: // 键5,音量增大
if(VolumeIndex < MaxVolume)
VolumeIndex++;
SACM_MS01_Volume(VolumeIndex);
break;
case 0x04: // 键6,音量减小
if(VolumeIndex > 0)
VolumeIndex--;
SACM_MS01_Volume(VolumeIndex);
break;
case 0x02: // 键7,播放下一曲
if(SongIndex < MaxSongNum-1)
SongIndex++;
SACM_MS01_Initial(DAC_24K, Auto);
SACM_MS01_Play(SongIndex, DAC1+DAC2, Ramp_UpDn_On);
break;
case 0x01: // 键8,播放前一曲
if(SongIndex > 0)
SongIndex--;
SACM_MS01_Initial(DAC_24K, Auto);
SACM_MS01_Play(SongIndex, DAC1+DAC2, Ramp_UpDn_On);
break;
default:
break;
}
if((SACM_MS01_Status()&0x01) != 0)
SACM_MS01_ServiceLoop(); // SACM-MS01 播放子程序
else if(Status_Stop == 0)
{
if(SongIndex < MaxSongNum-1) // 当前乐曲结束则播放下一曲
SongIndex++;
else
SongIndex = 0;
SACM_MS01_Initial(DAC_24K, Auto);
SACM_MS01_Play(SongIndex, DAC1+DAC2, Ramp_UpDn_On);
}
CLR_WDT(); // 清看门狗
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -