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

📄 voice.c

📁 单片机实现语音录放的源代码
💻 C
字号:
/*****************************************/
/* Copyright (c) 2005, 通信工程学院      */
/* All rights reserved.                  */
/* 作    者:戴 佳		        		 */
/*****************************************/

#include "voice.h"

/* 延时t毫秒 */
void delay(uint t)
{
	uint i;
	while(t--)
	{
		/* 对于11.0592M时钟,约延时1ms */
		for (i=0;i<125;i++)
		{}
	}
}

/* 外部中断0服务子程序 */
void out_int0() interrupt 0 using 1
{
  	EX0 = 0;						// 关外部中断0 
  	
	PD = 1;							// 进入节电状态	

	if(count<2) 					// 再重播2次,共3次放音
	{
		count++;
		delay(500); 				// 延时500ms
		P2 = P2&0xFC;				// A8=A9=0
		P0 = P0&0x00;				// 起始地址为0
		playback();					// 从地址0处播放
		EX0 = 1;					// 开外部中断0		
	}  
	else 
	{
		IdleFlag = 1;				// 变为空闲状态,可以再次按开始键
		count = 0;
	}
}	

/* 主程序 */
void main()
{ 
	EA = 1;							// 开CPU中断

  	count = 0;
	StartFlag = 0;
	IdleFlag = 1;

	while(IdleFlag==1)
	{
		if (START)
		{
			delay(10);				// 延时去抖动
			if (START) 				
				StartFlag = 1;		// 开始键按下标志
		}
		if (StartFlag == 1)
		{
			do 
			{
				P2 = P2&0xFC;		// A8=A9=0
				P0 = P0&0x00;		// 起始地址为0
				record();			// 录音开始,存放在地址0处
			}
			while (START);			// 开始键松开

			StartFlag = 0;

			PR = 1;					// 结束录音
			PD = 1;					// 进入节电状态

			delay(500);				// 延时500ms再播放录音

			EX0 = 1;				// 开外部中断0 

			P2 = P2&0xFC;			// A8=A9=0
			P0 = P0&0x00;			// 起始地址为0
			playback();				// 从地址0处进行第一次播放
			IdleFlag = 0;			// 当前不空闲,按开始键无效			
		}

	}
}		

/* 录音函数 */
void record(void)
{
	CE = 0;
	PD = 0;
	PR = 0;	

}

/* 放音函数 */  			
void playback(void)
{
	CE = 0;
	PD = 0;
	PR = 1;	
}


	
  	
	

	











⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -