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

📄 main.c

📁 spce061单片机的一些程序!C语言和汇编语言都有
💻 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 + -