模拟电子琴C语言_第1页
模拟电子琴C语言_第2页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include MusInstru.h/*键消抖延时函数*/void delay(void)uchar i;for (i=300;i0;i-);/*键扫描函数*/uchar getkey(void)uchar scancode,tmpcode;if (P1&0 xf0)=0 xf0)return(0);scancode = 0 xfe;while(scancode&0 x10)!=0) /逐行扫描P1 = scancode;/输出行扫描码if (P1&0 xf0)!=0 xf0) /本行有键按下tmpcode = (P1&0 xf0)|0 x0f;/*返回特征

2、字节码,为1的位即对应于行和列*/return(scancode)+(tmpcode);else scancode = (scancode1)|0 x01;/行扫描码左移一/*定时器0中断服务子程序*/void time0_int(void) interrupt 1 using 0/*设置计数初值*/TH0 = STH0;TL0 = STL0;P36=P36;脉冲/*主程序*/void main()uchar key,k;TMOD = 0 x01;作方式1ET0 = 1;EA = 1;while(1)/反相,产生输出/ T0,工k = 3;P1 = 0 xf0;/发全0行扫描码if (P1&a

3、mp;0 xf0)!=0 xf0)/若有键按下delay();延时去抖动if (P1&0 xf0)!=0 xf0)次,去除抖动影响key = getkey();调用键盘扫描函数/延时后再判断/根据获取的按键位置得到k值switch(key)case 0 x11:行1列k = 0;break;/ 1行2列case 0 x21:k = 1;break;/ 1行3列case 0 x41:k = 2;break;行4列case 0 x81:/ 1/ 1break;k = 11;case 0 x12:/ 2行1列k = 4; break;case 0 x22:/ 2行2列k = 5; break

4、;case 0 x42:/ 2行3列k = 6; break;case 0 x82:/ 2行4列k = 7; break;case 0 x14:/ 3行1列k = 8; break;case 0 x24:/ 3行2列k = 9; break;case 0 x44:/ 3行3列k = 10; break;case 0 x84:/ 3行4列TR0 = 1;/break; case 0 x18:/ 3行4列k = 12; break;case 0 x28:/ 3行4列k = 13; break;case 0 x48:/ 3行4列k = 14; break;case 0 x88:/ 3行4列k = 15; break;default: break;P36 = P36;反相/*根据所得的k值设定计数器STH0 = tabk/256;STL0 = tabk%256;开始计数/1的计数初值*/P1 = 0 xf0;/发全0行扫描码while (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论