📄 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.
//========================================================
//========================================================
// 工程名称: ex1_A2000_Auto
// 功能描述: 《实验指导书》语音部分第一个实验
// 通过自动、手动两种方式播放两段语音资源
// 涉及的库: CMacro1016.lib
// sacmv26e.lib
// 组成文件: main.c
// hardware.asm,isr.asm
// hardware.inc,a2000.inc
// a2000.h,hardware.h
// 硬件连接: DAC音频跳线短接
// 维护记录: 2005-09-12 v1.0
//
//========================================================
//========================================================
// 文件名称: main.c
// 功能描述: 通过自动方式播放两段语音资源
// 维护记录: 2005-09-12 v1.0
//========================================================
#include "a2000.h"
#include "hardware.h"
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Buffer (volatile unsigned int *)0x7001
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Buffer (volatile unsigned int *)0x7006
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
void Delay(void);
void prog1(void);
void prog2(void);
void prog3(void);
void prog4(void);
int keycode;
int oldkey=0;
int flag;
void PlaySnd_Auto(unsigned int uiSndIndex,unsigned int uiDAC_Channel);
//========================================================
// 语法格式: int main(void)
// 实现功能: 调用语音播放函数,通过自动方式播放两段语音资源
// 参数: 无
// 返回值: 无
//========================================================
int main(void)
{
*P_IOA_Dir = 0x0000; //设置IOA口为
*P_IOA_Attrib = 0x0000;
*P_IOA_Data = 0x00FF;
*P_IOB_Dir = 0xffff; //设置IOB口为同相低电平输出
*P_IOB_Attrib = 0xffff;
*P_IOB_Data = 0x0000;
while(1)
{
//int flag=0;
*P_Watchdog_Clear = 0x0001; // 清看门狗
keycode=*P_IOA_Data;
if(keycode!=0xff)
{
flag=1;
}
else
{flag=0;}
if(flag==1)
{
keycode=*P_IOA_Data;
}
else
{
keycode=oldkey;
}
switch(keycode)
{
case 0xfe: // K0
prog1();
oldkey=keycode;
break;
case 0xfd: // K1
prog2();
oldkey=keycode;
break;
case 0xfb: // K2
prog3();
oldkey=keycode;
break;
case 0xf7: // K3
prog4();
oldkey=keycode;
break;
default:
break;
}
*P_Watchdog_Clear = 0x0001; // 清看门狗
}
retur: return 0;
}
//========================================================
// 语法格式: void PlaySnd_Auto(unsigned int uiSndIndex,unsigned int uiDAC_Channel)
// 实现功能: 通过自动方式播放语音资源
// 参数: 1.uiSndIndex:语音资源序号 2.uiDAC_Channel:语音播放通道
// 返回值: 无
//========================================================
void PlaySnd_Auto(unsigned int uiSndIndex,unsigned int uiDAC_Channel)
{
SACM_A2000_Initial(1); //初始化语音播放,自动方式
SACM_A2000_Play(uiSndIndex,uiDAC_Channel,3); //播放语音
while((SACM_A2000_Status() & 0x0001) != 0) //判断当前是否在播放?返回最低位为1则表示当前在播放
{
SACM_A2000_ServiceLoop(); //服务程序
*P_Watchdog_Clear = 0x0001;
}
SACM_A2000_Stop(); //停止
}
void Delay(void)
{
unsigned int uiCount;
for(uiCount = 0;uiCount < 32767; uiCount++)
{
*P_Watchdog_Clear = 0x0001;//清看门狗操作
}
}
void prog1(void)
{ //定义输出数据变量
{
PlaySnd_Auto(0,1); //调用播放程序,播放第0段语音,采用DAC1播放
Delay(); //延时
*P_Watchdog_Clear = 0x0001; //清看门狗操作
}
}
void prog2(void)
{ //定义输出数据变量
{
PlaySnd_Auto(1,1); //调用播放程序,播放第0段语音,采用DAC1播放
Delay(); //延时
*P_Watchdog_Clear = 0x0001; //清看门狗操作
}
}
void prog3(void)
{ //定义输出数据变量
{
PlaySnd_Auto(2,1); //调用播放程序,播放第0段语音,采用DAC1播放
Delay(); //延时
*P_Watchdog_Clear = 0x0001; //清看门狗操作
}
}
void prog4(void)
{ //定义输出数据变量
{
PlaySnd_Auto(3,1); //调用播放程序,播放第0段语音,采用DAC1播放
Delay(); //延时
*P_Watchdog_Clear = 0x0001; //清看门狗操作
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -