?? voice.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 + -