• 美国的本质和终极目的决定,和中国必定是始终不断战事硝烟。 2019-06-15
  • 端午将至,我们更加要严格自律,不能趁过节之际搞吃喝送礼、公车私用、公款旅游等,要严防不正之风反弹回潮。做好自己的分内之事,安分守己,加强自我管理和监督,严格遵守 2019-06-15
  • 熊猫启航计划即将启动 让世界聆听大熊猫声音 2019-06-03
  • 尽管管理层一任一任地换,但是以每年IPO数量的多少作为反映政绩的主要标志,而对于股市下跌、市值(包括国有股)损失、经济晴雨表失真、投资者利益巨亏等等,则不在考核 2019-05-31
  • 打倒控房抄者有理,去分房好! 2019-05-26
  • 90后女生抛下帝都生活 仅花了6万元建了一幢别墅! ——凤凰网房产 2019-05-26
  • 陈全国在新疆果业集团调研 2019-05-21
  • “神剧”不再横行,抗战剧回到正轨 2019-05-18
  • 【专题】打一场扶贫攻坚硬仗 河北在行动 2019-05-16
  • 河北千名贫困儿童脊椎健康救助公益活动正式启动 2019-04-23
  • “四好农村路”助力乡村振兴 城市道路增亮让回家路更明亮 2019-04-20
  • 中纪委:有干部不信马列信鬼神 触犯纪律信小圈子 2019-04-20
  • 鸟瞰“中国围屋之乡” 造型独特如城堡 2019-04-16
  • 先想好如何处理可能的危害,要有经济“卫国战争”的准备,要将困难多设想一点,想到了就不会很被动。 2019-04-16
  • 实现中华民族伟大复兴是近代以来中华民族最伟大的梦想(认真学习宣传贯彻党的十九大精神) 2019-04-13
  • 广东11选五现场直播:社区导航

     

    广东十一选五开奖图

    搜索
    查看: 2225|回复: 8
    打印 上一主题 下一主题

    [求助] 关于C216的问题,想做一个密码锁,新人求大佬指教??!

    [复制链接]

    广东十一选五开奖图 www.guu6.com 15

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    跳转到指定楼层
    楼主
    发表于 2019-2-25 20:13 | 只看该作者 |只看大图 |倒序浏览 |阅读模式
    LOCK.C(24): error C216: subscript on non-array or too many dimensions
    请问这是什么原因呢,
    在网上找了很多的帖子,
    有说是数组越界,
    有说是头文件的引用不对,和程序的错误,
    由于这个程序是参考书上的,我不知道怎么改,请大神指教
    下面放上代码:

    #include
    #include
    #include
    #include
    #define uchar unsigned char
    #include
    /*键盘扫描???/
    uchar keyscan(void)
    {
            uchar scan1,scan2,keycode,a,key,key_code;
            P1 = 0xf0;
            scan1 = P1;
            if (scan1 != 0xf0)//判断是否按下
            {
                    //delayms(10);//延时10ms
                    scan1 = P1;
                    if (scan1 != 0xf0)//二次判断是否按下
                    {
                            P1 = 0x0f;
                            scan2 = P1;
                            keycode = scan1 | scan2;//组合键扫描编码
                            for (a=0;a<16;a++ )
                                    {
                                            if(keycode == key_code[a])//查表得键值
                                                    {
                                                            key = a;
                                                            beep();
                                                            return(key);//返回有效键值
                                                    }
                                    }
                    }
            }
    else
    P1 = 0xff;
    return(key = 16);//返回无效码
    }



    问题出在红色的代码,但是我想不明白怎么修正,而且之前遇到其他的问题,改正或者删除之后又会出现更多的问题,我觉得可能是程序的错误,希望大神指教??!





    此帖出自单片机论坛

    微信图片_20190225201021.png (29.73 KB, 下载次数: 0)

    微信图片_20190225201021.png


    1343

    TA的帖子

    6

    TA的资源

    版主

    Rank: 6Rank: 6

    沙发
    发表于 2019-2-26 08:24 | 只看该作者
    key_code[]这个数组在哪里定义的?
    专注智能产品的研究与开发,专注于电子电路的生产与制造……QQ:2912615383,电子爱好者群: void


    35

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    板凳
    发表于 2019-2-26 09:10 | 只看该作者
    首先你的数组没有定义,如果定义了你再看看你的数组是否有16个数组元素。如果没有16个,比如你只定义10个数组元素,当 if(keycode == key_code[a]),a=11时就根本查不到数组元素。


    7492

    TA的帖子

    4948

    TA的资源

    版主

    Rank: 6Rank: 6

    资源大师勋章

    4
    发表于 2019-2-26 09:12 | 只看该作者
    本帖最后由 tiankai001 于 2019-2-26 09:20 编辑

    看不到数组的定义,无法判断错误原因。
    看看你的数组元素是否有16个,或者是二维数组


    15

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    5
     楼主| 发表于 2019-2-26 09:46 | 只看该作者
    懒猫爱飞 发表于 2019-2-26 08:24
    key_code[]这个数组在哪里定义的?

    原来如此,感谢指出??!


    15

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    6
     楼主| 发表于 2019-2-26 09:50 | 只看该作者
    tiankai001 发表于 2019-2-26 09:12
    看不到数组的定义,无法判断错误原因。
    看看你的数组元素是否有16个,或者是二维数组

    感谢指出??!顺便问一下,如果我这样定义数组:uchar key_code[a]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};或者直接uchar key_code[16];请问哪一种有错,或者两种都错?本人基础很差,恳请指教

    点评

    数组定义可以这样uchar key_code[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};或者直接uchar key_code[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; 数组定义的时候,数组元素的个  详情 回复 发表于 2019-2-26 10:27


    15

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    7
     楼主| 发表于 2019-2-26 09:50 | 只看该作者
    邱海涛qht 发表于 2019-2-26 09:10
    首先你的数组没有定义,如果定义了你再看看你的数组是否有16个数组元素。如果没有16个,比如你只定义10个数 ...

    感谢指出??!顺便问一下,如果我这样定义数组:uchar key_code[a]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};或者直接uchar key_code[16];请问哪一种有错,或者两种都错?本人基础很差,恳请指教


    7492

    TA的帖子

    4948

    TA的资源

    版主

    Rank: 6Rank: 6

    资源大师勋章

    8
    发表于 2019-2-26 10:27 | 只看该作者
    落魄IV 发表于 2019-2-26 09:50
    感谢指出??!顺便问一下,如果我这样定义数组:uchar key_code[a]={0,1,2,3,4,5,6,7 ...

    数组定义可以这样uchar key_code[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};或者直接uchar key_code[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    数组定义的时候,数组元素的个数要么不指定长度,然后编译环境会自动根据实际数组元素的个数分配长度。要么直接带长度,但是不能是变量。所以你这样定义uchar key_code[a]={0,1,2,3,4,5,6,7 ...是不对的。


    另外建议你看看C语言里面变量的声明和定义,声明的时候可以不定义具体数值,但是数组定义的时候,要么是在声明时定义完所有元素值,否则在程序中必须单个定义。


    15

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    9
     楼主| 发表于 2019-2-26 10:59 | 只看该作者
    tiankai001 发表于 2019-2-26 10:27
    数组定义可以这样uchar key_code[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};或者直接uc ...

    十分感谢??!


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

    • 论坛活动 E手掌握

      扫码关注
      EEWORLD 官方微信

    • EE福利  唾手可得

      扫码关注
      EE福利 唾手可得

    Archiver|手机版|小黑屋|广东十一选五开奖图 ( 京ICP证 060456 )

    GMT+8, 2019-6-19 14:06 , Processed in 0.256838 second(s), 18 queries , Gzip On, MemCache On.

    快速回复 广东十一选五开奖图 返回列表
  • 美国的本质和终极目的决定,和中国必定是始终不断战事硝烟。 2019-06-15
  • 端午将至,我们更加要严格自律,不能趁过节之际搞吃喝送礼、公车私用、公款旅游等,要严防不正之风反弹回潮。做好自己的分内之事,安分守己,加强自我管理和监督,严格遵守 2019-06-15
  • 熊猫启航计划即将启动 让世界聆听大熊猫声音 2019-06-03
  • 尽管管理层一任一任地换,但是以每年IPO数量的多少作为反映政绩的主要标志,而对于股市下跌、市值(包括国有股)损失、经济晴雨表失真、投资者利益巨亏等等,则不在考核 2019-05-31
  • 打倒控房抄者有理,去分房好! 2019-05-26
  • 90后女生抛下帝都生活 仅花了6万元建了一幢别墅! ——凤凰网房产 2019-05-26
  • 陈全国在新疆果业集团调研 2019-05-21
  • “神剧”不再横行,抗战剧回到正轨 2019-05-18
  • 【专题】打一场扶贫攻坚硬仗 河北在行动 2019-05-16
  • 河北千名贫困儿童脊椎健康救助公益活动正式启动 2019-04-23
  • “四好农村路”助力乡村振兴 城市道路增亮让回家路更明亮 2019-04-20
  • 中纪委:有干部不信马列信鬼神 触犯纪律信小圈子 2019-04-20
  • 鸟瞰“中国围屋之乡” 造型独特如城堡 2019-04-16
  • 先想好如何处理可能的危害,要有经济“卫国战争”的准备,要将困难多设想一点,想到了就不会很被动。 2019-04-16
  • 实现中华民族伟大复兴是近代以来中华民族最伟大的梦想(认真学习宣传贯彻党的十九大精神) 2019-04-13
  • 福彩快三技巧视频直播 一起来捉妖怎么领取零代猫 部落冲突兵种升级 4887铁算盘资料四肖 森林舞会电玩城下载 亚特兰大老鹰队的英文 里昂纳多老人头黑珍珠干红葡萄酒 亚眠大炮 体彩七星彩走势图-综合版 天天酷跑5000米破亿 热血传奇骷髅精灵在哪 七乐彩周五走势 重庆时时彩走势图啊 一起来捉妖妖怪资质排行 川崎前锋vs名古屋鲸八结果 双色球17146期历史同期