向各位请教一下,在做音频实验遇到的问题
部分程序如下,请各位随便留点建议。#include"myApp.h"
void interrupt rxData(void)
{
*(int *)0x61 =DRR12;
*(int *)0x60 = DRR22;
DXR12= *(int *)0x61;
DXR22=*(int *)0x60;
}
void interrupt txData(void)
{
}
void interrupt rxData(void)是不是接收中断?void interrupt txData(void)是发送中断?
*(int *)0x61 =DRR12;
*(int *)0x60 = DRR22;
DXR12= *(int *)0x61;
DXR22=*(int *)0x60;
是不是就是把声音接收后就发送出去?
void interrupt txData(void)
{
}
为什么可以空的呢?
如果我要加入压缩和解压的程序,我应该加在哪里呢?谢谢各位的随意讨论! 从字面看那两个中断一个接收,一个发送,但更具体用途的看不出来。
如果你要加入压缩、解压的程序,应该放在主程序里面,否则中断里的程序可能太长。
类似的程序结构如下:
接收中断接收PCM数据到一个循环input_buffer里,要保证这个input_buffer足够大用于缓存接收的PCM数据。
主程序里不停按块处理数据,比如MP3压缩则要求1152个PCM/channel,这个块的大小就要看你具体的压缩算法。以MP3为例,主程序里不停的检查input_buffer里的数据是否大于1152*2个数据,有则进行压缩,没有就继续等;压缩完了之后进行解压缩,解压之后的数据存到另外的一个循环output_buffer里。
输出中断按采样频率不停的从output_buffer里读数据输出。由于输出中断是恒定的,所以必须确保output_buffer的数据填充的足够快,否则输出就有噪声了。 你好,谢谢你的回答,请问一下input_buffer应该设为什么类型的呢?是数组还是,随便一个地址就可以呢?还是就一个变量就可以呢?我现在设了个变量,貌似都可以。另外,我把中断,都去掉,就在主函数里执行,好像也能成功,是不是用到得是查询法呢?谢谢你的回答。
页:
[1]