|
硬件实验设计板是这样的:
一个独立按键和4X3距阵键盘(共13个按键),用中断扫描键盘是否被按下,如一个按键被按下就向PC机发送一个单音的MIDI信号音符。我只知道用单片机向PC机发送MIDI信号的协议是这样的
//这是发送函数
void send(uchar cc,kk,vv)//cc是命令+通道号,kk是音符号,vv是力度
{
TR1=1;
SBUF=cc;
while(TI==0);
TI=0;
SBUF=kk;
while(TI==0);
TI=0;
SBUF=vv;
while(TI==0);
TI=0;
TR1=0;
}
在MIDI协议中,通道号是0-16,音符号是0-127,力度是0-127
但我在按下按键的时候应该怎样去调用那个发送函数来发送MIDI信号呢?
因为我这里只需要用来的是13个按键,所以通道号我用的是1就够啦!力度用同一力度就可以,但那音符应该怎样算出来呢?发送到PC机时,PC机又怎么会知道单片机发送的数据是MIDI信号数据呢?
在MIDI协议里,数据传输的波特率是为31.25k吗?如果我是用12MHZ的晶振,那应该怎样计算出31.25k呢?
跪求简单实例源码或详细解说!!
谢谢各位大哥大姐
|
|