仿真半天结果也没出来,希望大家给我看看……
#include<reg52.h>
unsigned char tab[]={64580,64684,64777,64820,64898,64968,65030,65058};
unsigned int k;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit key5=P2^4;
sbit key6=P2^5;
sbit key7=P2^6;
sbit key8=P2^7;
sbit d1=P1^0;
void delay();
void keyscan();
void main()
{
TMOD=0x01;
EA=1;
ET0=1;
TH0=k/256;
TL0=k%256;
while(1)
keyscan();
}
void keyscan()
{
if(P2!=0xff)
{
if(key1==0)
{
delay();
if(key1==0)
k=tab[0];
}
if(key2==0)
{
delay();
if(key2==0)
k=tab[1];
}
if(key3==0)
{
delay();
if(key3==0)
k=tab[2];
}
if(key4==0)
{
delay();
if(key4==0)
k=tab[3];
}
if(key5==0)
{
delay();
if(key5==0)
k=tab[4];
}
if(key6==0)
{
delay();
if(key6==0)
k=tab[5];
}
if(key7==0)
{
delay();
if(key7==0)
k=tab[6];
}
if(key8==0)
{
delay();
if(key8==0)
k=tab[7];
}
TR0=1;
}
else TR0=0;
}
void delay()
{
unsigned char x,y;
for(x=0;x<10;x++)
for(y=0;y<100;y++);
}
void time() interrupt 1
{
TH0=k/256;
TL0=k%256;
d1=~d1;
}
简单的电子琴仿真实例,可以参考一下。
嗯,谢谢,咱们的思路基本上差不多,我的程序不知道哪里出了问题?
追答比较一下吧
追问嗯,我知道了,是刚开始的定义:unsigned int 我写成了unsigned char,唉,之前因为一直是写unsigned char ,所以习惯性的没改过来,害的我检查了好多遍,太粗心了!谢谢啊!
本回答被提问者采纳