找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5613|回复: 4
收起左侧

keil编程出现未定义标识符和参数列表长度不同错误,怎么解决

[复制链接]
ID:701275 发表于 2020-3-20 17:12 | 显示全部楼层 |阅读模式
166黑币
这里是声明部分和主函数部分函数。出问题的是:void Delay(uint time)参数列表长度不同、waitforstarting未定义标识符,大神看看是哪里出问题了。附件里有全部函数
#include<reg52.h>
#include<intrins.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
#define Lcd_Data P0;       //定义LCD数据端口

uchar code dispbuf[33]={"Temperature:   Distance:  mm"};
uchar numcode[10]={'0','1','2','3','4','5','6','7','8','9'};
uint num[29]={0};
uchar jsh,jsl;                                //计时器的高低位
uchar count=0;                                //10秒计次数
uint distance;                                 //距离

sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit DQ=P2^7;                                 //DS18B20数字端口
sbit Busy=P0^7;
                                
uint temp;                                           //温度变量
uchar bdata flag;                           //DS18B20存在标准

void Delay(void);                        //延时函数
void Read_Busy(void);                                //检查LCD是否忙
void lint_18B20(void);                           //初始化18B20
void Write_Comm(uchar);                          //写入LCD命令
void Write_Data(uhar);                          //写入LCD数据
void lint_LCD(void);                          //初始化LCD

uchar Readonechar(void);         //读取第一个字节
void Writeonechar(uchar dat);    //写入第一个字节
void testtemp(void);             //启动温度转换
uint wd(void);                   //读取温度
void Delay(uint time);            //延时函数

sbit sta_flag=flag^0;                           //10MS到标准位
sbit fuhao=flag^1;                                   //温度符号位
sbit START=P1^0;                                   //启动测距
sbit CNT=P2^5;                                           //发射超声波
sbit CSBIN=P2^6;                                   //返回信号
sbit BUZZER=P3^7;

void timer(void);
void delay1ms(void);                                        //延时1MS
void sys_init(void);                                        //系统初始化
void display(void);                                                //显示函数
void computer(void);                                        //计算
void hextobcd(bit flag,uchar num);                //转换BCD
void bm(void);                                                         //求补码
void delay15(uchar us);                                        //延时15us

/***********主函数**************/
void main(void)
{
        uchar i,j;
        for(i=0;i<255;i++)
                for(j=0;j<255;j++);        
        sys_init();                                                        //初始化
        display();                                                        //显示
        sta_flag=0;                                                        //标准复位
        Waitforstarting;                                        // 检查按键
        while(START);
        for(i=0;i<20;i++)
        delay1ms();
        if(START)
        goto waitforstarting;
        BUZZER=0;                                                        
        i=100000;
        while(i--);
        TR0=1;                                                                //启动定时器0
        ET0=1;
        testtemp();                                                        //启动温度转换
        while(1)
        {
                if(sta_flag)                                        //10MS到了
                {
                        while(0==CSBIN);                        //收到回波
                        TR1=0;
                        jsh=TH1;
                        jsl=TL1;
                        if(15==count)                                //900MS到检测温度
                        {
                                temp=wd();                                //读取温度
                                count=0;
                                testtemp();                                //重新启动转换
                                display();                                //刷新显示
                        }
                computer();                                                //计算距离
                hextobcd();                                                //转换BCD码
                sta_flag=0;
                }
        }
}

include.docx

19.92 KB, 下载次数: 7

最佳答案

查看完整内容

我看了你的代码,第一个问题 void Delay(uint time); //延时函数 声明时括号里面的uint time意思是调用这个函数时需要在括号里面输入参数time,可以填一个数字(具体需要延时的长度)。 然而你在前面还有一行声明了名称一样的函数,里面没有定义输入参数 void Delay(void); //延时函数 需要把这行删掉。 第二个问题 Waitforstarting; // 检查 ...
回复

使用道具 举报

ID:452950 发表于 2020-3-20 17:12 | 显示全部楼层
我看了你的代码,第一个问题
void Delay(uint time);            //延时函数
声明时括号里面的uint time意思是调用这个函数时需要在括号里面输入参数time,可以填一个数字(具体需要延时的长度)。
然而你在前面还有一行声明了名称一样的函数,里面没有定义输入参数
void Delay(void);                        //延时函数
需要把这行删掉。

第二个问题
Waitforstarting;                                        // 检查按键
这不是一个合法的函数,调用的时候要Waitforstarting();
后面你也没有类似 void Waitforstarting(){里面填功能}的声明,所以不知道有什么用。
回复

使用道具 举报

ID:706084 发表于 2020-3-20 17:25 | 显示全部楼层
我觉的哈,你这个goto的标记Waitforstarting那里是不是用的; 要用: 的吧,你可以看一下
回复

使用道具 举报

ID:282850 发表于 2020-3-20 17:33 | 显示全部楼层
Waitforstarting;   写成Waitforstarting();   
回复

使用道具 举报

ID:267719 发表于 2020-3-20 19:03 | 显示全部楼层
1:后面用到 goto waitforstarting; 说明 waitforstarting 是标号。标号的定义末尾应该是冒号,而不是分号。
2:C对大小写敏感,Waitforstarting和waitforstarting不是一个东西。这个要统一。
3:Delay函数定义了2次。分别是24行的void Delay(void);                        //延时函数   
    和35行的void Delay(uint time);            //延时函数
    而且这两个函数的参数还不一样。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表