找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3779|回复: 25
收起左侧

这个单片机程序57行哪里错了求助

  [复制链接]
ID:192187 发表于 2017-4-21 22:31 | 显示全部楼层 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define  uint unsigned int

uchar num;
uchar codeSSEG[]={0x3f,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
int SSEG;
void delay1s(uint z)
{
uint x; uchar y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)        ;
}
void keyscan()
{
uchar temp,z;
P2=0xf0;
if(P2!=0xf0)
{
delay1s(10);
{
temp=P2;
P2=0x0f;
z=temp|P2;
temp=P2&0x0f;
while(temp!=0x0f)
{temp=P2&0x0f;}
switch(z)
{
case 0xee: num=0;break;
case 0xde: num=1;break;
case 0xbe: num=2;break;
case 0x7e: num=3;break;
case 0xed: num=4;break;
case 0xdd: num=5;break;
case 0xbd: num=6;break;
case 0x7d: num=7;break;
case 0xeb: num=8;break;
case 0xdb: num=9;break;
case 0xbb: num=10;break;
case 0x7b: num=11;break;
case 0xe7: num=12;break;
case 0xd7: num=13;break;
case 0xb7: num=14;break;
case 0x77: num=15;break;
}
}
}
}
void main()
{
num=0xff;
P2=0xff;
while(1)
{
keyscan();
P1=~SSEG[num];
                           }
                           }


回复

使用道具 举报

ID:192187 发表于 2017-4-21 22:31 | 显示全部楼层
求助英雄好汉
回复

使用道具 举报

ID:192187 发表于 2017-4-21 22:32 | 显示全部楼层
求助大神快来救我
回复

使用道具 举报

ID:192187 发表于 2017-4-21 22:34 | 显示全部楼层
XFZF.C(57): error C216: subscript on non-array or too many dimensions
回复

使用道具 举报

ID:91114 发表于 2017-4-21 22:41 | 显示全部楼层
ccc奥 发表于 2017-4-21 22:32
求助大神快来救我

不愿意去数哪一行是第57行
回复

使用道具 举报

ID:192187 发表于 2017-4-21 22:48 | 显示全部楼层
aybco 发表于 2017-4-21 22:41
不愿意去数哪一行是第57行

最后面P1~=SSEG
回复

使用道具 举报

ID:162841 发表于 2017-4-22 00:50 来自手机 | 显示全部楼层
57行标一下再哪里也好啊
回复

使用道具 举报

ID:47933 发表于 2017-4-22 08:26 | 显示全部楼层
最后一行:SSEG[num]未定义,改成:P1=~codeSSEG[num]即可
回复

使用道具 举报

ID:47933 发表于 2017-4-22 08:29 | 显示全部楼层
最后一行:SSEG[num]未定义,改为:P1=~codeSSEG[num] 即可
回复

使用道具 举报

ID:190023 发表于 2017-4-22 08:37 | 显示全部楼层
额,我也是新手唉
回复

使用道具 举报

ID:23606 发表于 2017-4-22 08:42 | 显示全部楼层
uchar codeSSEG[]={0x3f,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code  SSEG[]={0x3f,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
回复

使用道具 举报

ID:159015 发表于 2017-4-22 08:44 | 显示全部楼层
SSEG被你定义成int型,57行怎么就边数组了?改成P1=~codeSSEG[num];试试这个错误有没有消除
回复

使用道具 举报

ID:148552 发表于 2017-4-22 09:00 | 显示全部楼层
#include<reg52.h>
#define uchar unsigned char
#define  uint unsigned int

uchar num;
uchar code SSEG[]={0x3f,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//int SSEG;
void delay1s(uint z)
{
uint x; uchar y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)        ;
}
void keyscan()
{
uchar temp,z;
P2=0xf0;
if(P2!=0xf0)
{
delay1s(10);
{
temp=P2;
P2=0x0f;
z=temp|P2;
temp=P2&0x0f;
while(temp!=0x0f)
{temp=P2&0x0f;}
switch(z)
{
case 0xee: num=0;break;
case 0xde: num=1;break;
case 0xbe: num=2;break;
case 0x7e: num=3;break;
case 0xed: num=4;break;
case 0xdd: num=5;break;
case 0xbd: num=6;break;
case 0x7d: num=7;break;
case 0xeb: num=8;break;
case 0xdb: num=9;break;
case 0xbb: num=10;break;
case 0x7b: num=11;break;
case 0xe7: num=12;break;
case 0xd7: num=13;break;
case 0xb7: num=14;break;
case 0x77: num=15;break;
}
}
}
}
void main()
{
num=0xff;
P2=0xff;
while(1)
{
keyscan();
P1=~SSEG[num];
    }
  }
回复

使用道具 举报

ID:148552 发表于 2017-4-22 09:01 | 显示全部楼层
#include<reg52.h>
#define uchar unsigned char
#define  uint unsigned int

uchar num;
uchar code SSEG[]={0x3f,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//int SSEG;
void delay1s(uint z)
{
uint x; uchar y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)        ;
}
void keyscan()
{
uchar temp,z;
P2=0xf0;
if(P2!=0xf0)
{
delay1s(10);
{
temp=P2;
P2=0x0f;
z=temp|P2;
temp=P2&0x0f;
while(temp!=0x0f)
{temp=P2&0x0f;}
switch(z)
{
case 0xee: num=0;break;
case 0xde: num=1;break;
case 0xbe: num=2;break;
case 0x7e: num=3;break;
case 0xed: num=4;break;
case 0xdd: num=5;break;
case 0xbd: num=6;break;
case 0x7d: num=7;break;
case 0xeb: num=8;break;
case 0xdb: num=9;break;
case 0xbb: num=10;break;
case 0x7b: num=11;break;
case 0xe7: num=12;break;
case 0xd7: num=13;break;
case 0xb7: num=14;break;
case 0x77: num=15;break;
}
}
}
}
void main()
{
num=0xff;
P2=0xff;
while(1)
{
keyscan();
P1=~SSEG[num];
    }
  }

给你改好了
回复

使用道具 举报

ID:192239 发表于 2017-4-22 09:04 | 显示全部楼层
你把那一行标记一下啊
回复

使用道具 举报

ID:192235 发表于 2017-4-22 09:08 | 显示全部楼层
你数组定义的时候把 code 和SSEG[] 连在一起了  把那里分开看看
回复

使用道具 举报

ID:192235 发表于 2017-4-22 09:11 | 显示全部楼层
uchar codeSSEG[]={0x3f,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

code 和 SSEG连一起了
回复

使用道具 举报

ID:192235 发表于 2017-4-22 09:12 | 显示全部楼层
uchar codeSSEG[],定义数组code SSEG[]连一起了
回复

使用道具 举报

ID:91114 发表于 2017-4-22 09:31 | 显示全部楼层

你的数组是codeSSEG, 不是SSEG,SSEG只是一个变量
回复

使用道具 举报

ID:151348 发表于 2017-4-22 11:01 | 显示全部楼层

uchar code SSEG[]={0x3f,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//int SSEG;
回复

使用道具 举报

ID:130231 发表于 2017-4-22 14:42 | 显示全部楼层
P2=~SSEG[num];
应该是
P2=~codeSSEG[num];            下面程我帮你改了下

345.zip

25.45 KB, 下载次数: 3

回复

使用道具 举报

ID:25153 发表于 2017-4-22 16:02 来自手机 | 显示全部楼层
数组定义code  SSEG[]
回复

使用道具 举报

ID:157057 发表于 2017-4-22 17:06 | 显示全部楼层
gnalorange 发表于 2017-4-22 16:02
数组定义code  SSEG[]

解决了吧/
回复

使用道具 举报

ID:187614 发表于 2017-4-22 17:14 | 显示全部楼层
从根本上弄清uchar code iSSEG[]={0x3f,0x06,0x5B,0x4F,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};的含义,该数组定义为固定格式数据放在程序存储器代码段。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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