📄 sound.c
字号:
#include "spce061a.h"
#include "key.h"
#include "organ.h"
int Key_code;
unsigned char Key_Delay;
/*---本源文件功能------------------------------------------------------------------*/
// 1、将键盘扫描码转换成相应的延时。unsigned int KeyDataChange(unsigned int Key_Data);
// 2、控制DA转换,发声。void sound();
/*-------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
// 函数名称:void sound();
// 函数功能:控制DA转换发声。
// 入口参数:无
// 出口参数:无
// 使用全局变量:Key_code----键盘扫描码 Key_Delay----相应延时
// 改变全局变量:无
/*-------------------------------------------------------------------------------*/
void sound()
{
int i,j,m;
Key_code = Key_Get(); //扫描键盘
if(Key_code!=0)
{
Key_Delay = KeyDataChange(Key_code);
}
if(Key_Delay!=0)
{
for(i=0;i<0xff;i++) //一次循环 cycles
{
*P_DAC_Ctrl=0x0000;
*P_DAC1=j;
*P_DAC2=j;
for(m = 0;m<Key_Delay;m++);
if(j==0x0000)
j=0x8000;
else j=0x0000;
*P_Watchdog_Clear = 0x0001;
}
// *P_DAC1=0x0000;
// *P_DAC2=0x0000;
}
*P_Watchdog_Clear = 0x0001; // 清看门狗
}
///////////////////////////////////////////////////
/*--------------------------------------------------------------------------*/
// 函数名称:unsigned int KeyDataChange(unsigned int Key_Data);
// 函数功能:将键盘扫描码转换成相应的延时。
// 入口参数:Key_code-----键盘扫描码
// 出口参数:Key_Delay----相应的延时(函数sound()中for循环的次数)
// 使用全局变量:Key_code-----键盘扫描码
// 改变全局变量:Key_Delay----相应的延时
/*-------------------------------------------------------------------------------*/
unsigned int KeyDataChange(unsigned int Key_code)
{
switch(Key_code)
{
case KEY_0: Key_Delay = 0;break;
case KEY_1: Key_Delay = 110;break;
case KEY_2: Key_Delay = 98;break;
case KEY_3: Key_Delay = 87;break;
case KEY_4: Key_Delay = 82;break;
case KEY_5: Key_Delay = 73;break;
case KEY_6: Key_Delay = 64;break;
case KEY_7: Key_Delay = 61;break;
case KEY_8: Key_Delay = 54;break;
case KEY_9: Key_Delay = 48;break;
case KEY_A: Key_Delay = 42;break;
case KEY_B: Key_Delay = 40;break;
case KEY_C: Key_Delay = 0;break;
case KEY_D: Key_Delay = 0;break;
case KEY_E: Key_Delay = 0;break;
case KEY_F: Key_Delay = 0;break;
default: Key_Delay = 0;break;
}
return Key_Delay;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -