电子琴论文 - 图文(6)

2019-06-05 09:34

return((~scancode)+(~tmpcode)); }

else scancode=(scancode<<1)|0x01; //行扫描码左移一位 } }

/*外部中断0,这里是弹唱按键*/ void EXO_IXT() interrupt 0 {

FY=0;LED1=1;LED2=0; }

/*外部中断线,这里是播放按键*/ void EX1_INT() interrupt 2 {

FY=1;LED1=0;LED2=1; }

/*定时器0中断服务子程序*/

void time0_int(void) interrupt 1 using 0 {

/*设置计数初值*/ TH0 = STH0; TL0 = STL0;

SPK=!SPK; //反相,产生输出脉冲*/ P2=DSY_CODE[k]; }

void main(void) { LED1=1; LED2=0; P2=0x3f; IE=0x87; TMOD=0x01; IT0=1; IT1=1; while(1) {

P0=0xf0; //发全0列扫描码 if((P0&0xf0)!=0xf0) //若有键按下 {

delay(); //延时去抖动

if((P0&0xf0)!=0xf0) //延时后再判断一次,去除抖动影响 {

key=getkey(); //调用键盘扫描函数

switch(key) //根据获取的按键位置得到K值 {

case 0x88:

k = 0;

break; case 0x48: k = 1;

break; case 0x28: k = 2 ; break; case 0x18: k = 3 ; break; case 0x84: k = 4 ; break; case 0x44: k = 5 ; break; case 0x24: k = 6 ; break; case 0x14: k = 7 ; break; case 0x82: k = 8 ; break; case 0x42: k = 9 ; break; case 0x22: k = 10 ; break; case 0x12: k = 11 ; break; case 0x81: k = 12 ; break; case 0x41: k = 13 ; break; case 0x21: k = 14 ; break;

case 0x11: k = 15 ; break; default : break; } if(FY==0) {

/*根据所得的K值设定计数器1的计数初值*/ 音符

} } } }

STH0 = tab[k]/256; STL0 = tab[k]%6;

TR0 = 1; //开始计数

while ((P0&0xf0)!=0xf0); //若没有松开按键,则等待,等待期间弹奏该 TR0=0; //若按键松开,则停止计数,不产生脉冲输出 }

else {

while (FY==1) {

if(Song[k][Tone_Index]==-1) Tone_Index=0;

STH0=(tab[Song[k][Tone_Index]])/256; STL0=(tab[Song[k][Tone_Index]])%6; P2=DSY_CODE[Song[k][Tone_Index]]; TR0 = 1;

delay1(300*Len[k][Tone_Index]); Tone_Index++; TR0=0; } }


电子琴论文 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:挖掘装载机

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: