标题: 求助一下,51单片机代码出错了,找不到问题在哪 [打印本页]

作者: WaWaLi    时间: 2021-7-27 00:02
标题: 求助一下,51单片机代码出错了,找不到问题在哪
如图,谢谢解答。

16273152478721550856414946846634.jpg (1.83 MB, 下载次数: 62)

16273152478721550856414946846634.jpg

16273152919773452400005591095293.jpg (1.91 MB, 下载次数: 49)

16273152919773452400005591095293.jpg

作者: FREEDOG    时间: 2021-7-27 07:44
??? 11行 函数原型 声明不对吧 参数类型定义呢
作者: man1234567    时间: 2021-7-27 07:54
贴上原代码很困难么
作者: isyido    时间: 2021-7-27 08:12
楼上说的对,结合错误提示,要看看附近的行。
作者: 小黑屋525    时间: 2021-7-27 08:29
你自己看看11行和12行,12行的函数申明的变量都还有数据类型,11行函数变量的数据类型呢???
作者: Letitia    时间: 2021-7-27 08:38
void xianshi()括号里的变量类型没声明
作者: sustlixin    时间: 2021-7-27 08:40
你11行的形参没有指定类型的
作者: pisigod    时间: 2021-7-27 08:59
应该是第11的形参没有写类型吧
作者: zuoancanduan    时间: 2021-7-27 09:10
图中第十一行,xianshi函数的声明不对;这个声明需要和你定义xianshi函数原型的地方保持一致;可以不要形参,但是数据类型必须要写出来。
作者: WaWaLi    时间: 2021-7-27 09:11
谢谢大家解答
作者: y16234    时间: 2021-7-27 09:21
函数声明里面不应该是数据类型吗?你这直接上的实参
作者: 菜鸟yc    时间: 2021-7-27 09:23
参数、变量需先定义
作者: gulinli    时间: 2021-7-27 10:04
第十一行,形参要先声明类型
作者: dwb123    时间: 2021-7-27 10:26
盲才,你的tt没有定义计算,比如tt++啥的,所以到不了tt==20,直接死循环
作者: WaWaLi    时间: 2021-7-27 11:40
代码如下
作者: WaWaLi    时间: 2021-7-27 11:41
man1234567 发表于 2021-7-27 07:54
贴上原代码很困难么

#include<reg52.h>
#define uint unsigned int;
#define uchar unsigned char;
uchar tt,num,ge,shi,bai;
sbit wei=P2^7;
sbit zi=P2^6;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void init();
void xianshi(uchar bai,shi,ge);
void delay(uint z);
void main()
{
    init();
          while(1)
                {
                    if(tt==20)
                                {
                                    tt=0;
                                          num++;
                                          if(num==100)
                                                {
                                                    num=0;
                                                }
                                    bai=num/100;
                                                shi=num%100/10;
                                                ge=num%10;
                                }
                                xianshi(uchar bai,shi,ge);
                }
}

void delay(uint z)
{
    uint x,y;
          for(x=110;x>0;x--)
              for(y=z;y>0;y--);
}

void init()
{
    num=0;
          TMOD=0x01;
          TH0=(65535-50000)/256;
          TL0=(65535-50000)%256;
          EA=1;
          ET0=1;
          TR0=1;
}

void xianshi(uchar bai,shi,ge)
{
    zi=1;
          P0=table[bai];
          zi=0;
          P0=0xff;
          wei=1;
          P0=0xfe;
          wei=0;
          delay(1);
       
          zi=1;
          P0=table[shi];
          zi=0;
          P0=0xff;
          wei=1;
          P0=0xfd;
          wei=0;
          delay(1);
       
          zi=1;
          P0=table[ge];
          zi=0;
          P0=0xff;
          wei=1;
          P0=0xfb;
          wei=0;
          delay(1);
}

void timer0() interrupt 1
{
          TH0=(65535-50000)/256;
          TL0=(65535-50000)%256;
          tt++;
}
作者: 0x00000000    时间: 2021-7-27 13:17
11行形参数据类型没有描述
作者: WaWaLi    时间: 2021-7-27 13:25
0x00000000 发表于 2021-7-27 13:17
11行形参数据类型没有描述

请问一下具体怎么描述
我添加类型后就有更多的错误了
作者: lkc8210    时间: 2021-7-27 13:33
本帖最后由 lkc8210 于 2021-7-27 13:37 编辑
WaWaLi 发表于 2021-7-27 13:25
请问一下具体怎么描述
我添加类型后就有更多的错误了
有更多的错误了<<<又不附上错误信息和代码,哪知道你怎么改?
作者: AUG    时间: 2021-7-27 14:07
WaWaLi 发表于 2021-7-27 13:25
请问一下具体怎么描述
我添加类型后就有更多的错误了

我看到你源代码那个xianshi(char ge,shi,bai);这个位置你的原始函数是这么写的;
你把它改成xianshi(char ge ,char shi,char bai),就可以了吧,没见过在形参你这样定义的
作者: lkc8210    时间: 2021-7-27 14:07
不要用#define
#define uint unsigned int;
#define uchar unsigned char;
改用 typedef
typedef unsigned int uint;
typedef unsigned char uchar;


作者: TestLife    时间: 2021-7-27 15:37
仔细看第7行上下有什么问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1