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; }
猜您喜欢
推荐内容
开源项目推荐 更多
热门活动
热门器件
随便看看
热门下载
评论