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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機實現(xiàn)簡單音樂發(fā)生器

          單片機實現(xiàn)簡單音樂發(fā)生器

          作者: 時間:2016-11-18 來源:網(wǎng)絡 收藏
          /*主程序*/

          void main()

          本文引用地址:http://www.ex-cimer.com/article/201611/315961.htm

          {

          uchar key,k;

          TMOD = 0x01;// T0,工作方式1

          ET0 = 1;

          EA = 1;

          while(1)

          {

          P1 = 0xf0;//發(fā)全0行掃描碼

          if ((P1&0xf0)!=0xf0)//若有鍵按下

          {

          delay();//延時去抖動

          if ((P1&0xf0)!=0xf0)//延時后再判斷一次,去除抖動影響

          {

          key = getkey();//調用鍵盤掃描函數(shù)

          //根據(jù)獲取的按鍵位置得到k值

          switch(key)

          {

          case 0x11:// 1行1列

          k = 0;

          break;

          case 0x21:// 1行2列

          k = 1;

          break;

          case 0x41:// 1行3列

          k = 2;

          break;

          case 0x81:// 1行4列

          k = 3;

          break;

          case 0x12:// 2行1列

          k = 4;

          break;

          case 0x22:// 2行2列

          k = 5;

          break;

          case 0x42:// 2行3列

          k = 6;

          break;

          case 0x82:// 2行4列

          k = 7;

          break;

          case 0x14:// 3行1列

          k = 8;

          break;

          case 0x24:// 3行2列

          k = 9;

          break;

          case 0x44:// 3行3列

          k = 10;

          break;

          case 0x84:// 3行4列

          k = 11;

          break;

          case 0x18:// 3行4列

          k = 12;

          break;

          case 0x28:// 3行4列

          k = 13;

          break;

          case 0x48:// 3行4列

          k = 14;

          break;

          case 0x88:// 3行4列

          k = 15;

          break;

          default:

          break;

          }

          P20 = ~P20;//反相

          /*根據(jù)所得的k值設定計數(shù)器1的計數(shù)初值*/

          STH0 = tab[k]/256;

          STL0 = tab[k]%256;

          TR0 = 1;//開始計數(shù)

          P1 = 0xf0;//發(fā)全0行掃描碼

          while ((P1&0xf0)!=0xf0)//若沒有松開按鍵

          {

          P1 = 0xf0;

          }

          TR1 = 0;//若按鍵松開,則停止計數(shù),不產生脈沖輸出

          }

          }

          }

          }



          評論


          技術專區(qū)

          關閉
          看屁屁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); })();