未簽名?夏爾?溫度;
未簽名?夏爾?關鍵;
未簽名?夏爾?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個音符。