<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 單片機電子琴設(shè)計

          單片機電子琴設(shè)計

          作者: 時間:2013-04-02 來源:網(wǎng)絡 收藏

          DK4A: MOV A,P3

          ANL A,#0FH

          XRL A,#0FH

          JNZ DK4A

          CLR TR0

          NOKEY4:

          LJMP WAIT

          DELY10MS:

          MOV R6,#10

          D1: MOV R7,#248

          DJNZ R7,$

          DJNZ R6,D1

          RET

          INT_T0:

          MOV TH0,STH0

          MOV TL0,STL0

          CPL P1.0

          RETI

          TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

          DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

          TABLE1: DW 64021,64103,64260,64400

          DW 64524,64580,64684,64777

          DW 64820,64898,64968,65030

          DW 65058,65110,65157,65178

          END

          7. C語言源程序

          #include AT89X51.H>

          unsigned char code table[]={0x3f,0x06,0x5b,0x4f,

          0x66,0x6d,0x7d,0x07,

          0x7f,0x6f,0x77,0x7c,

          0x39,0x5e,0x79,0x71};

          unsigned char temp;

          unsigned char key;

          unsigned char i,j;

          unsigned char STH0;

          unsigned char STL0;

          unsigned int code tab[]={64021,64103,64260,64400,

          64524,64580,64684,64777,

          64820,64898,64968,65030,

          65058,65110,65157,65178};

          void main(void)

          {

          TMOD=0x01;

          ET0=1;

          EA=1;

          while(1)

          {

          P3=0xff;

          P3_4=0;

          temp=P3;

          temp=temp 0x0f;

          if (temp!=0x0f)

          {

          for(i=50;i>0;i--)

          for(j=200;j>0;j--);

          temp=P3;

          temp=temp 0x0f;

          if (temp!=0x0f)

          {

          temp=P3;

          temp=temp 0x0f;

          switch(temp)

          {

          case 0x0e:

          key=0;

          break;

          case 0x0d:

          key=1;

          break;

          case 0x0b:

          key=2;

          break;

          case 0x07:

          key=3;

          break;

          }

          temp=P3;

          P1_0=~P1_0;

          P0=table[key];

          STH0=tab[key]/256;

          STL0=tab[key]%6;

          TR0=1;

          temp=temp 0x0f;

          while(temp!=0x0f)

          {

          temp=P3;

          temp=temp 0x0f;

          }

          TR0=0;

          }

          }

          P3=0xff;

          P3_5=0;

          temp=P3;

          temp=temp 0x0f;

          if (temp!=0x0f)

          {

          for(i=50;i>0;i--)

          for(j=200;j>0;j--);

          temp=P3;

          temp=temp 0x0f;

          if (temp!=0x0f)

          {

          temp=P3;

          temp=temp 0x0f;

          switch(temp)

          {

          case 0x0e:

          key=4;

          break;

          case 0x0d:

          key=5;

          break;

          case 0x0b:

          key=6;

          break;

          case 0x07:

          key=7;

          break;

          }

          temp=P3;

          P1_0=~P1_0;

          P0=table[key];

          STH0=tab[key]/256;

          STL0=tab[key]%6;

          TR0=1;

          temp=temp 0x0f;

          while(temp!=0x0f)

          {

          temp=P3;

          temp=temp 0x0f;

          }

          TR0=0;

          }

          }

          P3=0xff;

          P3_6=0;

          temp=P3;

          temp=temp 0x0f;

          if (temp!=0x0f)

          {

          for(i=50;i>0;i--)

          for(j=200;j>0;j--);

          temp=P3;

          temp=temp 0x0f;

          if (temp!=0x0f)

          {

          temp=P3;

          temp=temp 0x0f;

          switch(temp)

          {

          case 0x0e:

          key=8;

          break;

          case 0x0d:

          key=9;

          break;

          case 0x0b:

          key=10;

          break;

          case 0x07:

          key=11;

          break;

          }

          temp=P3;

          P1_0=~P1_0;

          P0=table[key];

          STH0=tab[key]/256;

          STL0=tab[key]%6;

          TR0=1;

          temp=temp 0x0f;

          while(temp!=0x0f)

          {

          temp=P3;

          temp=temp 0x0f;

          }

          TR0=0;

          }

          }

          P3=0xff;

          P3_7=0;

          temp=P3;

          temp=temp 0x0f;

          if (temp!=0x0f)

          {

          for(i=50;i>0;i--)

          for(j=200;j>0;j--);

          temp=P3;

          temp=temp 0x0f;

          if (temp!=0x0f)

          {

          temp=P3;

          temp=temp 0x0f;

          switch(temp)

          {

          case 0x0e:

          key=12;

          break;

          case 0x0d:

          key=13;

          break;

          case 0x0b:

          key=14;

          break;

          case 0x07:

          key=15;

          break;

          }

          temp=P3;

          P1_0=~P1_0;

          P0=table[key];

          STH0=tab[key]/256;

          STL0=tab[key]%6;

          TR0=1;

          temp=temp 0x0f;

          while(temp!=0x0f)

          {

          temp=P3;

          temp=temp 0x0f;

          }

          TR0=0;

          }

          }

          }

          }

          void t0(void) interrupt 1 using 0

          {

          TH0=STH0;

          TL0=STL0;

          P1_0=~P1_0;

          }


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 單片機 電子琴 AT89S51

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();