电子琴简单游戏
未签名?夏尔?温度;
未签名?夏尔?关键;
未签名?夏尔?I,j;
未签名?夏尔?STH0
未签名?夏尔?STL0
未签名?int?代码?tab[]={64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178};
作废?主要(无效)
{
TMOD = 0x 01;
ET0 = 1;
EA = 1;
while(1)
{
P3 = 0x ff;?//干掉P3。
P3 _ 4 = 0;?//使P3_4为低电平,这样可以判断第一竖行是否按键。
temp = P3;
temp=temp?& amp?0x0f?
如果?(temp!=0x0f)//某个键被按下。
{
for(I = 50;我& gt0;我-)
for(j = 200;j & gt0;j-);?//延迟
temp = P3;?
temp=temp?& amp?0x0f
如果?(temp!=0x0f)?//然后判断是否有按键被按下。
{
temp = P3;
temp=temp?& amp?0x0f
Switch(temp)//确定按下了哪个键。
{
案子?0x0e:
key = 0;
打破;
案子?0x0d:
key = 1;
打破;
案子?0x0b:
key = 2;
打破;
案子?0x07:
key = 3;
打破;
}
temp = P3;
p 1 _ 0 = ~ p 1 _ 0;
P0 =表[键];
sth 0 = tab[key]/256;//找出该键对应频率的时间作为定时器中断的初始值。
STL 0 = tab[key]% 256;
TR0 = 1;
temp=temp?& amp?0x0f
while(temp!=0x0f)
{
temp = P3;
temp=temp?& amp?0x0f
}
TR0 = 0;
}
}
P3 = 0x ff;
P3 _ 5 = 0;?//和上面类似,现在是判断第二排的按钮。
temp = P3;
temp=temp?& amp?0x0f
如果?(temp!=0x0f)
{
for(I = 50;我& gt0;我-)
for(j = 200;j & gt0;j-);
temp = P3;
temp=temp?& amp?0x0f
如果?(temp!=0x0f)
{
temp = P3;
temp=temp?& amp?0x0f
开关(温度)
{
案子?0x0e:
key = 4;
打破;
案子?0x0d:
key = 5;
打破;
案子?0x0b:
key = 6;
打破;
案子?0x07:
key = 7;
打破;
}
temp = P3;
p 1 _ 0 = ~ p 1 _ 0;
P0 =表[键];
sth 0 = tab[key]/256;
STL 0 = tab[key]% 256;
TR0 = 1;
temp=temp?& amp?0x0f
while(temp!=0x0f)
{
temp = P3;
temp=temp?& amp?0x0f
}
TR0 = 0;
}
}
P3 = 0x ff;
P3 _ 6 = 0;
temp = P3;
temp=temp?& amp?0x0f
如果?(temp!=0x0f)
{
for(I = 50;我& gt0;我-)
for(j = 200;j & gt0;j-);
temp = P3;
temp=temp?& amp?0x0f
如果?(temp!=0x0f)
{
temp = P3;
temp=temp?& amp?0x0f
开关(温度)
{
案子?0x0e:
key = 8;
打破;
案子?0x0d:
key = 9;
打破;
案子?0x0b:
key = 10;
打破;
案子?0x07:
key = 11;
打破;
}
temp = P3;
p 1 _ 0 = ~ p 1 _ 0;
P0 =表[键];
sth 0 = tab[key]/256;
STL 0 = tab[key]% 256;
TR0 = 1;
temp=temp?& amp?0x0f
while(temp!=0x0f)
{
temp = P3;
temp=temp?& amp?0x0f
}
TR0 = 0;
}
}
P3 = 0x ff;
P3 _ 7 = 0;
temp = P3;
temp=temp?& amp?0x0f
如果?(temp!=0x0f)
{
for(I = 50;我& gt0;我-)
for(j = 200;j & gt0;j-);
temp = P3;
temp=temp?& amp?0x0f
如果?(temp!=0x0f)
{
temp = P3;
temp=temp?& amp?0x0f
开关(温度)
{
案子?0x0e:
key = 12;
打破;
案子?0x0d:
key = 13;
打破;
案子?0x0b:
key = 14;
打破;
案子?0x07:
key = 15;
打破;
}
temp = P3;
p 1 _ 0 = ~ p 1 _ 0;
P0 =表[键];
sth 0 = tab[key]/256;
STL 0 = tab[key]% 256;
TR0 = 1;
temp=temp?& amp?0x0f
while(temp!=0x0f)
{
temp = P3;
temp=temp?& amp?0x0f
}
TR0 = 0;
}
}
}
}
作废?t0(void)?打断?1?使用?0
{
TH0 = STH0
TL0 = STL0
p 1 _ 0 = ~ p 1 _ 0;
}
电路图和原理我都有,正好在做这个。?自己看节目吧。我不想评论。?
这样可以发出16个音符。写A89S52的时候应该是AT89S52。