资 源 简 介
isd2560应用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; }