找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2060|回复: 16
收起左侧

求助各位大神,单片机代码出什么错了

[复制链接]
ID:954926 发表于 2021-7-27 15:50 来自手机 | 显示全部楼层 |阅读模式
#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++;
}
回复

使用道具 举报

ID:328014 发表于 2021-7-27 17:24 | 显示全部楼层
应该要把编译错误的信息也上图,什么错误 定位在哪一行,大家如果这样肉眼直接看,效率太低了
回复

使用道具 举报

ID:954926 发表于 2021-7-27 19:20 来自手机 | 显示全部楼层
错误如下
16273847855647564644268576528796.jpg
回复

使用道具 举报

ID:476415 发表于 2021-7-27 20:05 来自手机 | 显示全部楼层
TH0之类能手工计算的,先算好。
回复

使用道具 举报

ID:401564 发表于 2021-7-27 21:24 | 显示全部楼层
我帮你改好了,自己找一下有什么地方不一样的
这都是C语言的基础知识,我也是才开始几天的C语言,一般这种问题都是可以自己找到答案的
自己想尽脑子的去解决一个问题,那么你对这个问题的印象肯定是深刻的,对于自己的学习也有好处
网上"拿来主义"倒是快,估计下回还是会犯同样的错误
我就不告诉你哪里了,你自己找找
还有,编程要养成一个有注释的习惯,每个人写程序的写法都不一样,你倒是看明白,别人不一定能看明白的

#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(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++;
}
回复

使用道具 举报

ID:956921 发表于 2021-7-27 21:33 | 显示全部楼层
xianshi(uchar bai,shi,ge);
这个函数你还带 uchar  干嘛  ,又不是声明
回复

使用道具 举报

ID:155507 发表于 2021-7-27 21:48 | 显示全部楼层
#define 是宏定义 不用加分号
typedef  是类型重定义 得加分号

你可以用
#define uint unsigned int     //不要添加分号
#define uchar unsigned char   //不要添加分号
改用 typedef
typedef unsigned int uint;    //要添加分号
typedef unsigned char uchar;  //要添加分号


回复

使用道具 举报

ID:954926 发表于 2021-7-27 22:05 来自手机 | 显示全部楼层
51heiqwer 发表于 2021-7-27 21:33
xianshi(uchar bai,shi,ge);
这个函数你还带 uchar  干嘛  ,又不是声明

请问是上中下哪一个呢
回复

使用道具 举报

ID:161164 发表于 2021-7-27 22:47 | 显示全部楼层
不是回答了你了吗?
又开新贴子问同一个问题?
不要用#define
#define uint unsigned int;
#define uchar unsigned char;
改用 typedef
typedef unsigned int uint;
typedef unsigned char uchar;
回复

使用道具 举报

ID:954926 发表于 2021-7-28 10:04 来自手机 | 显示全部楼层
Y_G_G 发表于 2021-7-27 21:24
我帮你改好了,自己找一下有什么地方不一样的
这都是C语言的基础知识,我也是才开始几天的C语言,一般这种问 ...

受教了
回复

使用道具 举报

ID:934353 发表于 2021-7-28 11:22 | 显示全部楼层

你这个代码烧进去试了吗,正确吗?我怎么看着有点奇怪
回复

使用道具 举报

ID:745085 发表于 2021-7-28 11:39 | 显示全部楼层
开心就好hhhh 发表于 2021-7-28 11:22
你这个代码烧进去试了吗,正确吗?我怎么看着有点奇怪

我觉得还是会报错
回复

使用道具 举报

ID:745085 发表于 2021-7-28 11:45 | 显示全部楼层
  1. #include<reg52.h>

  2. #define uint unsigned int;
  3. #define uchar unsigned char;

  4. uchar tt,num,ge,shi,bai;
  5. sbit wei=P2^7;
  6. sbit zi=P2^6;

  7. uchar code table[]={
  8. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
  9. 0x39,0x5e,0x79,0x71};

  10. void init();
  11. void xianshi(uchar bai,uchar shi,uchar ge);
  12. void delay(uint z);

  13. void main()
  14. {
  15.           init();
  16.           while(1)
  17.           {
  18.                     if(tt==20)
  19.                      {
  20.                               tt=0;
  21.                               num++;
  22.                               if(num==100)
  23.                              {
  24.                                   num=0;
  25.                              }
  26.                              bai=num/100;
  27.                              shi=num%100/10;
  28.                              ge=num%10;
  29.                      }
  30.                     xianshi(bai,shi,ge);
  31.            }
  32. }

  33. void delay(uint z)
  34. {
  35.     uint x,y;
  36.     for(x=110;x>0;x--)
  37.         for(y=z;y>0;y--);
  38. }

  39. void init()
  40. {
  41.           num=0;
  42.           TMOD=0x01;
  43.           TH0=(65535-50000)/256;
  44.           TL0=(65535-50000)%256;
  45.           EA=1;
  46.           ET0=1;
  47.           TR0=1;
  48. }

  49. void xianshi(uchar bai,uchar shi,uchar ge)
  50. {
  51.           zi=1;
  52.           P0=table[bai];
  53.           zi=0;
  54.           P0=0xff;
  55.           wei=1;
  56.           P0=0xfe;
  57.           wei=0;
  58.           delay(1);
  59.         
  60.           zi=1;
  61.           P0=table[shi];
  62.           zi=0;
  63.           P0=0xff;
  64.           wei=1;
  65.           P0=0xfd;
  66.           wei=0;
  67.           delay(1);
  68.         
  69.           zi=1;
  70.           P0=table[ge];
  71.           zi=0;
  72.           P0=0xff;
  73.           wei=1;
  74.           P0=0xfb;
  75.           wei=0;
  76.           delay(1);
  77. }

  78. void timer0() interrupt 1
  79. {
  80.           TH0=(65535-50000)/256;
  81.           TL0=(65535-50000)%256;
  82.           tt++;
  83. }
复制代码
回复

使用道具 举报

ID:386001 发表于 2021-7-28 11:56 | 显示全部楼层
这个程序,目前可能语法上没错误了,功能还是错误的,后面跑出来的结果应该还是错误的,形参定义有问题
回复

使用道具 举报

ID:954926 发表于 2021-7-28 12:44 来自手机 | 显示全部楼层
开心就好hhhh 发表于 2021-7-28 11:22
你这个代码烧进去试了吗,正确吗?我怎么看着有点奇怪

还是错误的
回复

使用道具 举报

ID:954926 发表于 2021-7-28 12:45 来自手机 | 显示全部楼层
Y_G_G 发表于 2021-7-27 21:24
我帮你改好了,自己找一下有什么地方不一样的
这都是C语言的基础知识,我也是才开始几天的C语言,一般这种问 ...

还是错误的哦
回复

使用道具 举报

ID:954926 发表于 2021-7-28 12:51 来自手机 | 显示全部楼层
感谢各位,我自己已经解决了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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