📄 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.
//======================================================================
//======================================================================
// 工程名称: ex6_LED_Key_Music
// 功能描述: 《实验指导书》综合实验
// 4*4键盘播放语音
// 不同的按键选择播放相对应的语句
// 涉及的库: CMacro1016.lib
// sacmv26e.lib
// 组成文件: main.c
// isr.asm/key.asm/Led.asm/hardware.asm
// hardware.h/s480.h/SPCE061A.h
// hardware.inc/s480.inc/SPCE061A.inc
// 硬件连接: IOA口低8位连接1*8数码管的段选
// IOB口IOB15 、IOB14、IOB13、IOB12、IOB2、IOB1、IOB0连接位选
// IOA口高8位连接4*4键盘
// 日期: 2005-10-17 v1.0(建立)
//======================================================================
//======================================================================
// 文件名称: main.c
// 功能描述: 4*4键盘控制语音播放
// 维护记录: 2005-10-17 v1.0
//======================================================================
#include "SPCE061A.h"
#include "Key.h"
#include "Dig.h"
#include "s480.h"
#define GREEN 0x00ff
#define RED 0xff00
#define HaveKey 1
#define NoKey 0
#define SPEECH_1 0
#define DAC1 1
#define DAC2 2
#define Ramp_UpDn_Off 0
#define Ramp_Up_On 1
#define Ramp_Dn_On 2
#define Ramp_UpDn_On 3
#define Auto 1
#define Full 1
#define Empty 2
unsigned char Keycode;
unsigned char KeyFlag; //按键标识
//===============================================================================================
// 语法格式: int main(void)
// 实现功能: 主函数
// 参数: 无
// 返回值: 0
//===============================================================================================
unsigned int KeyDataChange(unsigned int Key_Data);
void Initial_INT(void);
unsigned int g_Data[11] = {0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f};
//0, 1, 2, 3, 4, 5, 6, 7, 8, 9
int main(void)
{
KeyFlag = 0;
Keycode = 12;
Key_Init();
DIG_Init();
Initial_INT();
SACM_S480_Initial(Auto); //初始化为自动方式播放
while(1)
{
*P_Watchdog_Clear = 0x0001; // 清看门狗
Keycode = Key_Get(); //扫描键盘
if(Keycode!=0)
{
Keycode = KeyDataChange(Keycode);
DIG_Set(1,g_Data[Keycode]);
SACM_S480_Volume(15); //设置为最大播放音量
switch(Keycode)
{
case 1: SACM_S480_Play(0,DAC1+DAC2,Ramp_UpDn_On); //播放语音资源s1
break;
case 2: SACM_S480_Play(1,DAC1+DAC2,Ramp_UpDn_On);break; //播放语音资源s2
case 3: SACM_S480_Play(2,DAC1+DAC2,Ramp_UpDn_On); break; //播放语音资源s3
case 4: SACM_S480_Play(3,DAC1+DAC2,Ramp_UpDn_On); //播放语音资源s4
break;
case 5: SACM_S480_Play(4,DAC1+DAC2,Ramp_UpDn_On); //播放语音资源s5
break;
case 6: SACM_S480_Play(5,DAC1+DAC2,Ramp_UpDn_On); //播放语音资源s6
break;
case 7:SACM_S480_Play(6,DAC1+DAC2,Ramp_UpDn_On); //播放语音资源s7
break;
case 8:SACM_S480_Play(7,DAC1+DAC2,Ramp_UpDn_On); //播放语音资源s8
break;
case 9:SACM_S480_Play(8,DAC1+DAC2,Ramp_UpDn_On); //播放语音资源s9
break;
case 0:SACM_S480_Play(9,DAC1+DAC2,Ramp_UpDn_On); //播放语音资源s0
break;
default: break;
}
}
SACM_S480_ServiceLoop(); // 获取语音数据并将其填入解码队列
*P_Watchdog_Clear = 0x0001; // 清看门狗
}
return 0;
}
//============================================================================================
//语法格式:unsigned int KeyDataChange(unsigned int Key_Data)
//实现功能:键值译码程序
//参数: unsigned int Key_Data-键值机器码
//返回值: 0~F-合法的数字键
// 0xff-不合法的按键
//============================================================================================
unsigned int KeyDataChange(unsigned int Key_Data)
{
switch(Key_Data)
{
case KEY_0: Key_Data = 7;break;
case KEY_1: Key_Data = 8;break;
case KEY_2: Key_Data = 9;break;
case KEY_3: Key_Data = 0;break;
case KEY_4: Key_Data = 4;break;
case KEY_5: Key_Data = 5;break;
case KEY_6: Key_Data = 6;break;
case KEY_7: Key_Data = 0;break;
case KEY_8: Key_Data = 1;break;
case KEY_9: Key_Data = 2;break;
case KEY_A: Key_Data = 3;break;
case KEY_B: Key_Data = 0;break;
case KEY_C: Key_Data = 0;break;
case KEY_D: Key_Data = 0;break;
case KEY_E: Key_Data = 0;break;
case KEY_F: Key_Data = 0;break;
default: Key_Data = 0;break;
}
return Key_Data;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -