找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3137|回复: 6
收起左侧

单片机编程遇到未定义标识符和参数列表长度不同怎么办

[复制链接]
ID:701275 发表于 2020-3-20 11:06 | 显示全部楼层 |阅读模式

出现未定义标识符怎么解决?参数列表长度不同怎么办?

出现未定义标识符怎么解决?参数列表长度不同怎么办?

回复

使用道具 举报

ID:235200 发表于 2020-3-20 12:36 | 显示全部楼层
是不是延时函数delay()括号内要加入实际参数呢?程序不全,不能作出准确的答复
回复

使用道具 举报

ID:452950 发表于 2020-3-20 13:47 | 显示全部楼层
如果前面有声明这个函数的话,调用要这样:
Waitforstarting();
如果有输入参数要填在括号里面。
第一个错误在35行,看不到
回复

使用道具 举报

ID:701275 发表于 2020-3-20 16:56 | 显示全部楼层
csmyldl 发表于 2020-3-20 12:36
是不是延时函数delay()括号内要加入实际参数呢?程序不全,不能作出准确的答复

这里是声明部分和主函数部分函数。出问题的是: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;
                }
        }
}
回复

使用道具 举报

ID:701275 发表于 2020-3-20 16:58 | 显示全部楼层
xxpp2011 发表于 2020-3-20 13:47
如果前面有声明这个函数的话,调用要这样:
Waitforstarting();
如果有输入参数要填在括号里面。

这是声明和主函数部分,问题是: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;
                }
        }
}
回复

使用道具 举报

ID:701275 发表于 2020-3-20 17:06 | 显示全部楼层
xxpp2011 发表于 2020-3-20 13:47
如果前面有声明这个函数的话,调用要这样:
Waitforstarting();
如果有输入参数要填在括号里面。

这里是声明部分和主函数部分函数。出问题的是: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;
                }
        }
}
回复

使用道具 举报

ID:452950 发表于 2020-3-20 17:17 | 显示全部楼层
建档扶贫对象 发表于 2020-3-20 16:56
这里是声明部分和主函数部分函数。出问题的是:void Delay(uint time)参数列表长度不同、waitforstarting ...

void Delay(uint time)
这个函数声明的时候定义了输入变量time,所以调用的时候要用Delay(xxx),里面填延时的长度。
waitforstarting
这个我不知道是什么,前面也没有声明这个函数,格式也不对
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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