📄 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.
//========================================================
//========================================================
// 工程名称: ex5_A2000_S480
// 功能描述: 《实验仪指导书》语音实验
// SACM_A2000和SACM_S480混合播放
// 键盘控制混合播放SACM_A2000和SACM_S480格式的语音资源
// 涉及的库: CMacro1016.lib
// SacmV26e.lib
// 组成文件: main.c
// hardware.asm,isr.asm,key.asm
// a2000.h,key.h,s480.h
// a2000.inc,hardware.inc,key.inc,s480.inc
// 硬件连接: KEYPAD的IOA7~0与COL1~8连接;IOA8与ROW连接
// 维护记录: 2005-09-12 v1.0
//
//========================================================
//========================================================
// 文件名称: main.c
// 功能描述: 键盘控制混合播放SACM_A2000和SACM_S480格式的语音资源
// 维护记录: 2005-09-12 v1.0
//========================================================
#include "key.h"
#include "a2000.h"
#include "s480.h"
#define P_Watchdog_Clear (unsigned int *)0x7012
#define A2000 1 //SACM_A2000格式
#define S480 2 //SACM_S480格式
#define MAX_VOLUME 15
#define MIN_VOLUME 0
#define MAX_NUM_A2000 3 //定义A2000播放的最大语音数
#define MAX_NUM_S480 2 //定义S480播放的最大语音数
#define MANUAL 0
#define AUTO 1
//========================================================
// 语法格式: int main(void)
// 实现功能:
// 参数: 无
// 返回值: 无
//========================================================
unsigned int g_uiSpeechType = 0; //定义语音播放类型
int main(void)
{
unsigned int uiIndex_A2000 = 0; //定义A2000格式的语音索引号
unsigned int uiIndex_S480 = 0; //定义A2000格式的语音索引号
unsigned int uiVolume_A2000 = 8;
unsigned int uiVolume_S480 = 8;
unsigned int uiKey = 0; //定义键值,并初始化为0
Key_Init(); //调用键盘初始化程序,在key.asm中定义
while(1)
{
uiKey = Key_Get(); //调用取键值程序获取键值,在key.asm中定义
switch(uiKey)
{
case KEY_1: //第一个键按下
SACM_S480_Stop(); //停止播放S480格式的语音资源
g_uiSpeechType = A2000; //语音播放类型为1,播放A2000格式语音
SACM_A2000_Initial(AUTO); //A2000格式播放初始化,为自动播放方式
SACM_A2000_Play(uiIndex_A2000,3,3); //播放第一段A2000格式语音
break;
case KEY_2: //第二个键按下
SACM_A2000_Stop();
g_uiSpeechType = S480; //语音播放类型为2,播放S480格式语音
SACM_S480_Initial(AUTO); //S480格式播放初始化,为自动播放方式
SACM_S480_Play(uiIndex_S480,3,3); //播放第一段S480格式语音
break;
case KEY_3: //第三个键按下
if(g_uiSpeechType==A2000)
SACM_A2000_Pause(); //暂停正在播放的A2000格式语音
else if(g_uiSpeechType==S480)
SACM_S480_Pause(); //暂停正在播放的S480格式语音
break;
case KEY_4: //第四个键按下
if(g_uiSpeechType==A2000)
SACM_A2000_Resume(); //恢复播放A2000格式语音
else if(g_uiSpeechType==S480)
SACM_S480_Resume(); //恢复播放S480格式语音
break;
case KEY_5: //第五个键按下
if(g_uiSpeechType==A2000)
{
uiVolume_A2000++; //音量加1
if(uiVolume_A2000 > MAX_VOLUME) //音量是否大于最大音量15
uiVolume_A2000 = MAX_VOLUME; //是,音量为最大音量
SACM_A2000_Volume(uiVolume_A2000); //设置音量
}
else if(g_uiSpeechType==S480)
{
uiVolume_S480++; //音量加1
if(uiVolume_S480 > MAX_VOLUME) //音量是否大于最大音量15
uiVolume_S480 = MAX_VOLUME; //是,音量为最大音量
SACM_S480_Volume(uiVolume_S480); //设置音量
}
break;
case KEY_6: //第六个键按下
if(g_uiSpeechType==A2000)
{
if(uiVolume_A2000 > MIN_VOLUME) //音量是否大于最小音量0
uiVolume_A2000--; //是,音量减1
SACM_A2000_Volume(uiVolume_A2000); //设置音量
}
else if(g_uiSpeechType==S480)
{
if(uiVolume_S480 > MIN_VOLUME) //音量是否大于最小音量0
uiVolume_S480--; //是,音量减1
SACM_S480_Volume(uiVolume_S480); //设置音量
}
break;
case KEY_7: //第七个键按下
if(g_uiSpeechType==A2000)
{
uiIndex_A2000++; //A2000格式的语音索引号加1
if(uiIndex_A2000 == MAX_NUM_A2000)
uiIndex_A2000 = 0;
SACM_A2000_Initial(AUTO); //A2000格式播放初始化,为自动播放方式
SACM_A2000_Play(uiIndex_A2000,3,3);
}
else if(g_uiSpeechType==S480)
{
uiIndex_S480++; //S480格式的语音索引号加1
if(uiIndex_S480 == MAX_NUM_S480)
uiIndex_S480 = 0;
SACM_S480_Initial(AUTO); //S480格式播放初始化,为自动播放方式
SACM_S480_Play(uiIndex_S480,3,3); //播放
}
break;
case KEY_8: //第八个键按下
if(g_uiSpeechType==A2000)
{
if(uiIndex_A2000 == 0) //A2000格式的语音索引号减1
uiIndex_A2000 = MAX_NUM_A2000 - 1;
else uiIndex_A2000--;
SACM_A2000_Initial(AUTO); //A2000格式播放初始化,为自动播放方式
SACM_A2000_Play(uiIndex_A2000,3,3); //播放
}
else if(g_uiSpeechType==S480)
{
if(uiIndex_S480 == 0) //S480格式的语音索引号减1
uiIndex_S480 = MAX_NUM_S480 - 1;
else uiIndex_S480--;
SACM_S480_Initial(AUTO); //S480格式播放初始化,为自动播放方式
SACM_S480_Play(uiIndex_S480,3,3); //播放
}
break;
default:
break;
}
if(g_uiSpeechType==A2000)
{
if(SACM_A2000_Status()&0x0001)
SACM_A2000_ServiceLoop(); //调用SACM_A2000_ServiceLoop()函数填充语音队列
else
{
uiIndex_A2000++; //A2000格式的语音索引号加1
if(uiIndex_A2000 == MAX_NUM_A2000)
uiIndex_A2000 = 0;
SACM_A2000_Initial(AUTO); //A2000格式播放初始化,为自动播放方式
SACM_A2000_Play(uiIndex_A2000,3,3);
SACM_A2000_Volume(uiVolume_A2000); //设置音量
}
}
else if(g_uiSpeechType==S480)
{
if(SACM_S480_Status()&0x0001)
SACM_S480_ServiceLoop(); //调用SACM_A2000_ServiceLoop()函数填充语音队列
else
{
uiIndex_S480++; //A2000格式的语音索引号加1
if(uiIndex_S480 == MAX_NUM_S480)
uiIndex_S480 = 0;
SACM_S480_Initial(AUTO); //A2000格式播放初始化,为自动播放方式
SACM_S480_Play(uiIndex_S480,3,3);
SACM_S480_Volume(uiVolume_S480); //设置音量
}
}
*P_Watchdog_Clear = 0x0001; //清看门狗
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -