久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2397|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

音樂發(fā)生器 keil代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:782260 發(fā)表于 2021-3-26 13:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg51.h>
#define uint  unsigned int
#define uchar unsigned char
#define output P1                //P1口做輸出接口  
#define input  P1       //P1口做輸入接口


unsigned int code Soundtab[] = { 64580,64684,64777,64820,64898,64968,65030,65058,};  //設(shè)置T值
uint SoundTemp;        //用來存儲T值
sbit Sound = P3^7;          //揚聲器,接P3.7口

void delayms(uint xms)   //延時x毫秒
{
   uint x,y;
     for(x=xms;x>0;x--)
     for(y=110;y>0;y--);
}

void T0_INT(void) interrupt 1                  //中斷程序
{       
     Sound = ~Sound;                                  //電平取反,發(fā)音
         TH0 = SoundTemp/256;                          //除以256                  
     TL0 = SoundTemp;                 //載入定時半周期的初始值

}

void main()
{
        TMOD = 0X01;                    //定時器T0設(shè)置為方式1
        EA = 1;                                         
        ET0 = 1;                                  //使能 T0 中斷       
        TR0 = 0;                                //關(guān)閉T0定時器
        while(1)                                //循環(huán)
  {
               
         uint n;       
         uchar L,H;                             //臨時保存讀取的行或者列                                  
         output = 0x0f;               
            L = input;                                //讀取列
         if(0x0f != L)                   //如果按鍵按下
        {                                          
                delayms(5);                    //延時,用于消除抖動
                L = input;                        //再讀取列
                if(0x0f != L)                //說明按鍵按下       
                {
                        L = L & 0x0f;                //保留低4位
                        output = 0xf0;                        //準備讀取行
                        delayms(1);                             //延時
                        H = input;                            //讀取行
                        H = H & 0xf0;                //保留高4位
                        L = L | H;                    //將列和行的值合并
                }
        }
       
        if(L==0xee)
        {                                                                                //P1=11101110  P1^0與P1^4輸入低電平         說明是按鍵1按下
                  n=0;
                  SoundTemp = Soundtab[n];                         //讀取音調(diào)的簡譜碼T值
              TR0 = 1;                                            //啟動中斷
                  while(0xf0 != output);                    //檢測按鍵松開
              TR0 = 0;
                  Sound = 1        ;
        }       
        if(L==0xde)
        {                                                                                //P1=11011110  P1^0與P1^5輸入低電平         說明是按鍵2按下
                  n=1;
                  SoundTemp = Soundtab[n];                         //讀取音調(diào)的簡譜碼T值
              TR0 = 1;                                            //啟動中斷
                  while(0xf0 != output);                    //檢測按鍵松開
              TR0 = 0;
                  Sound = 1        ;
        }                       
        if(L==0xbe)
        {                                                                                //說明是按鍵3按下
                  n=2;
                  SoundTemp = Soundtab[n];                         //讀取音調(diào)的簡譜碼T值
              TR0 = 1;                                            //啟動中斷
                  while(0xf0 != output);                    //檢測按鍵松開
              TR0 = 0;
                  Sound = 1        ;
        }                
        if(L==0x7e)
        {                                                                                //說明是按鍵4按下
                  n=3;
                  SoundTemp = Soundtab[n];                         //讀取音調(diào)的簡譜碼T值
              TR0 = 1;                                            //啟動中斷
                  while(0xf0 != output);                    //檢測按鍵松開
              TR0 = 0;
                  Sound = 1        ;
        }
        if(L==0xed)
        {                                                                                //說明是按鍵5按下
                  n=4;
                  SoundTemp = Soundtab[n];                         //讀取音調(diào)的簡譜碼T值
              TR0 = 1;                                            //啟動中斷
                  while(0xf0 != output);                    //檢測按鍵松開
              TR0 = 0;
                  Sound = 1        ;
        }
        if(L==0xdd)
        {                                                                                //說明是按鍵6按下
                  n=5;
                  SoundTemp = Soundtab[n];                         //讀取音調(diào)的簡譜碼T值
              TR0 = 1;                                            //啟動中斷
                  while(0xf0 != output);                    //檢測按鍵松開
              TR0 = 0;
                  Sound = 1        ;
        }
        if(L==0xbd)
        {                                                                                //說明是按鍵7按下
                  n=6;
                  SoundTemp = Soundtab[n];                         //讀取音調(diào)的簡譜碼T值
              TR0 = 1;                                            //啟動中斷
                  while(0xf0 != output);                    //檢測按鍵松開
              TR0 = 0;
                  Sound = 1        ;
        }
        if(L==0x7d)
        {                                                                                //說明是按鍵8按下
                  n=7;
                  SoundTemp = Soundtab[n];                         //讀取音調(diào)的簡譜碼T值
              TR0 = 1;                                            //啟動中斷
                  while(0xf0 != output);                    //檢測按鍵松開
              TR0 = 0;
                  Sound = 1        ;
        }
  }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久免费视频网 | 一二三四在线视频观看社区 | 欧美二区在线 | 日韩精品一二三区 | av天天澡天天爽天天av | 国产亚洲精品久久久优势 | 欧美精品乱码久久久久久按摩 | 国产二区精品视频 | 澳门永久av免费网站 | 欧美自拍日韩 | 亚洲精品久久久 | 91精品国产乱码久久久久久久久 | 欧美精品国产一区二区 | 免费影视在线观看 | 一区视频| 亚洲免费片 | 色综合99 | 欧美一区二区三区日韩 | 国产91精品久久久久久久网曝门 | 日韩精品在线看 | 色在线免费视频 | 精品国产区| 青青青伊人 | 国产精品1区2区3区 国产在线观看一区 | 91黄色片免费看 | 日本不卡一区二区 | 精品乱码一区二区三四区 | 黄久久久 | 欧美精品一区二区三区在线四季 | 国产网站在线播放 | 国产精品亚洲综合 | 国产一区 | 日韩中文在线视频 | 中文字幕在线免费观看 | 一级高清 | 欧美极品一区二区 | 免费在线观看一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 国产永久免费 | 久久爱黑人激情av摘花 | 亚洲精品在线免费观看视频 |