找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6549|回复: 10
打印 上一主题 下一主题
收起左侧

单片机程序一直编译不成功 missing function-prototype

[复制链接]
跳转到指定楼层
楼主
ID:878420 发表于 2021-1-17 20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下是抄书上的程序,keil一直编译不过,新手小白不知道什么原因,自己对照书一直找不出错误。

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit led1=P1^0;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delayms(uint);
void dispaly(uchar,uchar);
uchar num,num1,num2,shi,ge;


void main()
{
        TMOD=0x11;
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        TH1=(65536-45872)/256;
        TL1=(65536-45872)%256;
        EA=1;
        ET0=1;
        ET1=1;
        TR0=1;
        TR1=1;
        while(1)
        {
                        display(shi,ge);
        }

}


void display(uchar shi,uchar ge)                                //μ÷óÃÏÔê¾×óoˉêy
{
         dula=1;
        P0=table[shi];                                                                //μúò»¸öêyÂë1üÏÔê¾ê®Î»êy¾Y
        dula=0;
        P0=0xff;                                                                        //1رÕËùóDÏÔê¾
        wela=1;
        P0=0xfe;
        wela=0;
        delayms(5);

        dula=1;
        P0=table[ge];                                                           //μú¶t¸öêyÂë1üÏÔ꾸öλêy¾Y
        dula=0;
        P0=0xff;                                                                   //1رÕËùóDÏÔê¾
        wela=1;
        P0=0xfd;
        wela=0;
        delayms(5);
}


void delayms(uint xms)                                                        //μ÷óÃmsÑóê±×óoˉêy
{
         uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}


void T0_time() interrupt 1
{
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        num1++;
        if(num1==4)
        {
                 num1=0;
                led1=~led1;                  
        }        
}

void T1_time() interrupt 3
{
        TH1=(65536-45872)/256;
        TL1=(65536-45872)%256;
        num2++;
        if(num2==20)
        {
                num2=0;
                num++;
                if(num==60)
                        num=0;
                shi=num/10;
                ge=num%10;
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:878420 发表于 2021-1-17 20:25 | 只看该作者
请求大师傅告知一下。
keil


compiling 数码管2.c...
数码管2.c(31): warning C206: 'display': missing function-prototype
数码管2.c(31): error C267: 'display': requires ANSI-style prototype
数码管2.c(38): error C231: 'display': redefinition
数码管2.c(56): error C231: 'display': redefinition
Target not created.
Build Time Elapsed:  00:00:00
回复

使用道具 举报

板凳
ID:878420 发表于 2021-1-17 20:26 | 只看该作者
compiling 数码管2.c... 数码管2.c(31): warning C206: 'display': missing function-prototype 数码管2.c(31): error C267: 'display': requires ANSI-style prototype 数码管2.c(38): error C231: 'display': redefinition 数码管2.c(56): error C231: 'display': redefinition Target not created. Build Time Elapsed:  00:00:00
回复

使用道具 举报

地板
ID:878420 发表于 2021-1-17 21:03 | 只看该作者
找到错误dispaly写错了,正确display
回复

使用道具 举报

5#
ID:798201 发表于 2021-1-22 14:23 | 只看该作者
void display(uchar shi,uchar ge);

要放到主函数前面声明:





#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit led1=P1^0;

void display(uchar shi,uchar ge);

uchar code table[]= {
    0x3f,0x06,0x5b,0x4f,
    0x66,0x6d,0x7d,0x07,
    0x7f,0x6f,0x77,0x7c,
    0x39,0x5e,0x79,0x71
};
void delayms(uint);
void dispaly(uchar,uchar);
uchar num,num1,num2,shi,ge;


void main()
{
    TMOD=0x11;
    TH0=(65536-45872)/256;
    TL0=(65536-45872)%256;
    TH1=(65536-45872)/256;
    TL1=(65536-45872)%256;
    EA=1;
    ET0=1;
    ET1=1;
    TR0=1;
    TR1=1;
    while(1)
    {
        display(shi,ge);
    }

}


void display(uchar shi,uchar ge)                                //μ÷ó???ê?×óoˉêy
{
    dula=1;
    P0=table[shi];                                                                //μúò???êy??1ü??ê?ê???êy?Y
    dula=0;
    P0=0xff;                                                                        //1?±??ùóD??ê?
    wela=1;
    P0=0xfe;
    wela=0;
    delayms(5);

    dula=1;
    P0=table[ge];                                                           //μú?t??êy??1ü??ê?????êy?Y
    dula=0;
    P0=0xff;                                                                   //1?±??ùóD??ê?
    wela=1;
    P0=0xfd;
    wela=0;
    delayms(5);
}


void delayms(uint xms)                                                        //μ÷ó?ms?óê±×óoˉêy
{
    uint i,j;
    for(i=xms; i>0; i--)
        for(j=110; j>0; j--);
}


void T0_time() interrupt 1
{
    TH0=(65536-45872)/256;
    TL0=(65536-45872)%256;
    num1++;
    if(num1==4)
    {
        num1=0;
        led1=~led1;
    }
}

void T1_time() interrupt 3
{
    TH1=(65536-45872)/256;
    TL1=(65536-45872)%256;
    num2++;
    if(num2==20)
    {
        num2=0;
        num++;
        if(num==60)
            num=0;
        shi=num/10;
        ge=num%10;
    }
}
回复

使用道具 举报

6#
ID:798201 发表于 2021-1-22 14:24 | 只看该作者
void display(uchar shi,uchar ge);
要放到主函数前面声明
回复

使用道具 举报

7#
ID:824490 发表于 2021-1-22 15:37 | 只看该作者
void main()这个主函数只能在C文件的最末端。不然就要把其它函数在C文件的前端声明一次。这是C的规则。
回复

使用道具 举报

8#
ID:878420 发表于 2021-1-23 19:32 | 只看该作者
显示子函数在主函数前面已经声明,显示英文写错了。谢谢各位工程师!
回复

使用道具 举报

9#
ID:722618 发表于 2021-1-25 11:45 | 只看该作者
函数没有定义,或者是苦衷没有相应函数。
回复

使用道具 举报

10#
ID:879537 发表于 2021-1-27 15:22 | 只看该作者
void dispaly(uchar,uchar);  写错了,是display
回复

使用道具 举报

11#
ID:976415 发表于 2022-3-3 23:47 | 只看该作者
#include <AT89X51.h>
bit dsinit();
void write_data();
unsigned char readdata();
sbit ds=P3^3;
unsigned int i;
unsigned int t1;
unsigned char t2;
unsigned char t;
int j;
unsigned char dat,rdata;
bit b;


void main()
{
while(1)
{
dsinit();
write_data(0xCC);
write_data(0x44);
dsinit();
write_data(0xCC);
write_data(0xbe);
t1=readdata();
t2=readdata();
t2=(t2<<8)|t1;

}


}

bit dsinit()
{
ds=0;
i=60;
while(i>0)i--;
ds=1;
i=4;
while(i>0)i--;
while(!ds);
i=60;
while(i>0)i--;
}

void write_data()
{
for(j=0;j>0;j--)
{
b=dat&0x01;
dat>>=1;
if(b)
{
ds=0;
i=2;
while(i>0)i--;
ds=1;
i=7;
while(i>0)i--;
}
else
{
ds=0;
i=8;
while(i>0)i--;
ds=1;
i++;i++;
}
}}


unsigned char readdata()
{

for(j=8;j>0;j--)
{
rdata>>=1;
ds=0;
i++;
ds=1;
i++;i++;
if(ds)
rdata=rdata|0x80;
i=8;
while(i>0)i--;
ds=1;
}
return rdata;
}











回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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