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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2130|回復: 0
收起左側

單片機課程之電子琴制作

[復制鏈接]
ID:170570 發表于 2017-3-14 12:21 | 顯示全部樓層 |閱讀模式
這個是我上個月單片機課程做的電子琴C代碼,
花了一個禮拜的時間,也許對其他同學有幫助,謝謝!
#include <AT89X51.H>
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口取出
P3_4=0;                       //使P3_4為低電平,這樣可以判斷第一豎排有沒有鍵按下
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]%256;
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]%256;
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]%256;
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]%256;
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;
}

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 激情 亚洲 | 91色在线视频 | 91成人免费观看 | 日韩电影中文字幕 | 97热在线| 三级视频网站 | 日本黄色短片 | 精品视频久久久久久 | wwww.xxxx免费| 日韩精品一区二区三区第95 | 91久久精品一区二区二区 | 久久精品一区 | 亚洲成人福利在线观看 | 国产日韩精品在线 | 国产视频福利一区 | 毛片免费视频 | 99久久99| 日韩视频在线播放 | 欧美亚州综合 | 国产成人久久精品一区二区三区 | 久久草在线视频 | 精品国产一区二区三区日日嗨 | 高清久久久 | 国产精品一区二区久久精品爱微奶 | 亚洲综合区 | 一区二区在线 | 国产男女视频网站 | 国产中文 | 久久一区二区三区四区五区 | 黄色片免费看视频 | 丝袜一区二区三区 | 99久久精品免费看国产四区 | 日韩黄 | av一区二区三区 | 久久精品亚洲精品国产欧美 | 成人在线精品视频 | 九九热视频这里只有精品 | 久久久2o19精品 | 91视在线国内在线播放酒店 | 国产精品国产三级国产a | 欧美日韩亚洲一区 |