找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1697|回复: 13
收起左侧

单片机0~99计数器程序报错

[复制链接]
ID:336670 发表于 2021-12-12 13:06 | 显示全部楼层 |阅读模式
#include"reg51.h"
#define uchar unsigned char
        
uchar display_code[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,                        
                                                                                                0x7d,0x07,0x7f,0x6f,0x77,0x7c,
                                                                                                0x39,0x5e,0x79,0x71};
uchar display_data[8]={0,0,0,0,0,0,0,0};               

void delay()               
{
        uchar i;
        for(i=250;i>0;i--);
}
void display()               
{
        uchar z,k;
        k=0x80;                                       
        for(z=0;z<8;z++)                        
        {
                P2=0;                                                        
                P0=display_code[display_data[z]];        
                P2=k;               
                k=k>>1;               
                delay();
        }
        P2=0;                        
}
void calc()
{
        display_data[7]++;                        
        if(display_data[7]>9)               
        {                                                                                                
                display_data[7]=0;               
                display_data[6]++;               
                if(display[6]>9)                        
                {                                                                                       
                        display_data[6]=0;        
                }               
        }
}
void main()
{
        uchar a;
        while(1)
        {
                for(a=0;a<250;a++)
                {
                        display();               
                }
                calc();                        
        }
}

这是我从一本书上抄写下来的0~99累加计数小程序,变编译的时候报错(静态事牍?c(35): error C216: subscript on non-array or too many dimensions),恳请大神们帮忙看看是这么不对呢


2.png
1.png
回复

使用道具 举报

ID:883242 发表于 2021-12-12 17:31 | 显示全部楼层
出错是这句:display[6]>9
你觉得display是个数组???
回复

使用道具 举报

ID:883242 发表于 2021-12-12 14:44 | 显示全部楼层
是这句出问题了吗?
P0=display_code[display_data[z]];

总要给别人提供足够的信息吧?
回复

使用道具 举报

ID:139866 发表于 2021-12-12 15:12 | 显示全部楼层
你还不如截个图呢,你让我猜那个是35行吗
回复

使用道具 举报

ID:336670 发表于 2021-12-12 16:25 | 显示全部楼层
Hephaestus 发表于 2021-12-12 14:44
是这句出问题了吗?
P0=display_code[display_data[z]];

报错信息没有提示是哪一行,所以找不到问题了
回复

使用道具 举报

ID:336670 发表于 2021-12-12 16:30 | 显示全部楼层
天ノ忆 发表于 2021-12-12 15:12
你还不如截个图呢,你让我猜那个是35行吗

截了图了,求大神帮忙看看呢
回复

使用道具 举报

ID:336670 发表于 2021-12-12 16:31 | 显示全部楼层
天ノ忆 发表于 2021-12-12 15:12
你还不如截个图呢,你让我猜那个是35行吗

截了图了,求大神帮忙看看呢
回复

使用道具 举报

ID:342822 发表于 2021-12-12 17:29 | 显示全部楼层
#include"reg51.h"
#define uchar unsigned char
      
uchar display_code[16]=         // 这里改为公的不是母的
{0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};
                                                                                               
uchar display_data[8]={0,0,0,0,0,0,0,0};               

void delay()               
{
        uchar i;
        for(i=250;i>0;i--);
}
void display()               
{
        uchar z,k;
        k=0x80;                                       
        for(z=0;z<8;z++)                       
        {
                P2=0;                                                      
                P0=display_code[display_data[z]];      
                P2=k;               
                k=k>>1;               
                delay();
        }
        P2=0;                       
}
void calc()
{
        display_data[7]++;                       
        if(display_data[7]>9)               
        {                                                                                               
                display_data[7]=0;               
                display_data[6]++;               
                if(display_data[6]>9)    //这里原 if(display[6]>9)                  
                {                                                                                       
                        display_data[6]=0;      
                }               
        }
}
void main()
{
        uchar a;
        while(1)
        {
                for(a=0;a<250;a++)
                {
                        display();               
                }
                calc();                       
        }
}
回复

使用道具 举报

ID:336670 发表于 2021-12-12 18:16 | 显示全部楼层
Hephaestus 发表于 2021-12-12 17:31
出错是这句:display[6]>9
你觉得display是个数组???

display()是函数嘛,前面写的
回复

使用道具 举报

ID:336670 发表于 2021-12-12 18:17 | 显示全部楼层
Hephaestus 发表于 2021-12-12 17:31
出错是这句:display[6]>9
你觉得display是个数组???

大神,看得真仔细,谢谢了,
回复

使用道具 举报

ID:336670 发表于 2021-12-14 21:01 | 显示全部楼层
taotie 发表于 2021-12-12 17:29
#include"reg51.h"
#define uchar unsigned char
      

赞,谢谢大神用心帮忙纠错,已经更正了,很感谢了
回复

使用道具 举报

ID:986496 发表于 2021-12-15 16:48 | 显示全部楼层
报错信息为在非数组下标,也就是说你的数组名错了
回复

使用道具 举报

ID:336670 发表于 2021-12-21 22:18 | 显示全部楼层
老二不怕黑 发表于 2021-12-12 18:16
display()是函数嘛,前面写的

大神,可以帮忙看看主函数里面的for循环250次是什么意思不呢??
回复

使用道具 举报

ID:336670 发表于 2021-12-21 22:19 | 显示全部楼层
老二不怕黑 发表于 2021-12-14 21:01
赞,谢谢大神用心帮忙纠错,已经更正了,很感谢了

大神,可以帮忙看看主函数里面的for循环250次是什么意思不呢??
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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