帮我看看哪不对吧 c51五键的琴 Keil C51编译出现 call not to a function ; too many actual paramete

按键响,不按不响 高电平时发声
#include<REG51.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

sbit BEEP = P3^7; //喇叭输出脚

sbit K1 = P1^0; //定义按键控制端
sbit K2 = P1^1;
sbit K3 = P1^2;
sbit K4 = P1^3;
sbit K5 = P1^4;

uchar th0_f; //在中断中装载的 T0 的值高 8 位
uchar tl0_f; //在中断中装载的 T0 的值低 8 位
uchar temp;
//T0值及输出频率对照表
uchar code freq[10]={
0x49,0xF2,//00262HZ ,2#
0xC8,0xF3,//00294HZ ,4
0x1E,0xF5,//00330HZ ,5
0xD7,0xF6,//00392HZ ,6#
0xD8,0xF7,//00440HZ 1 //12
};

//通用延时子程序
void delay(ulong v)
{
for(v=0;v<10000;v++) ;
}

//定时中断 0,用于产生唱歌频率
timer0() interrupt 1
{
TL0=tl0_f;
TH0=th0_f; //调入预定时值
BEEP=~BEEP; //取反音乐输出I/O
}

void main(void) // 主程序
{
EA = 1; //开总中断
ET0 = 1; //定时器T0中断允许
TMOD = 0x01; //使用定时器 0 的 16 位工作模式

while(1)
{
P1=0x00;
temp=P1;
if(temp!=0x00)
{
switch(temp)
{
case 1(0x87):TR0 = 1;tl0_f=freq[0];th0_f=freq[1];delay(10000);break;
case 2(0x47):TR0 = 1;tl0_f=freq[2];th0_f=freq[3];delay(10000);break;
case 3(0x27):TR0 = 1;tl0_f=freq[4];th0_f=freq[5];delay(10000);break;
case 4(0x17):TR0 = 1;tl0_f=freq[6];th0_f=freq[7];delay(10000);break;
case 5(0x0f):TR0 = 1;tl0_f=freq[8];th0_f=freq[9];delay(10000);break;
default:break;
}
}
TR0 = 0; //定时器TT0停止工作
BEEP=1; //关蜂鸣器
}
}

case 1(0x87):
case 2(0x47):
case 3(0x27):
case 4(0x17):
case 5(0x0f):
应该是 1(0x87)设置了多余的参量, 由于你的对TEMP判断 可以尝试下将case 1(0x87):改为
case 0x87: 这样编译是没有问题 但是烧到板子上以后程序是否能达到需要的结果就不是很清楚了
温馨提示:答案为网友推荐,仅供参考