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

📄 main.c

📁 电压控制程序,符合各种设备需要,核心程序,IBm专属
💻 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 + -