普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4880|回复: 3

[已解决] 矩阵按键,两个警告找不到愿意,程序无法运行

 关闭 [复制链接]

1

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2020-1-4 14:18:50 | 显示全部楼层 |阅读模式
1金钱
编译提示有两个警告,找两天了实在是找不到问题来求助
#include <reg51.h>


typedef unsigned char u8;          //一个字节 最大255 0xFF
typedef unsigned int  u16;          //一个字         最大65535 0xFFFF


sbit LSA=P2^2;         
sbit LSB=P2^3;       
sbit LSC=P2^4;                                  //控制那个数码管显示八位二进制刚好八个状态

#define GPIO_KEY P1        //宏定义
#define GPIO_DIG P0         //宏定义


u8 keyvalue;

u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,};
void delay(u16 i)
{
        while(i--);
}


void keydown()
{
        u8 a=0;
        GPIO_KEY=0x0f;   //高四位输出低电平
        if(GPIO_KEY!=0x0f)         //如果等于0X0F证明没有按键按下,若不等于证明有按键按下
        {
                 delay (1000);          //延时消抖
                if(GPIO_KEY!=0x0f)
                {
                        GPIO_KEY=0x0f;                //重新再定义一次高四位输出低电平
                        switch(GPIO_KEY)
                        {
                                case(0x07): keyvalue=0; break;
                                case(0x0b):        keyvalue=1; break;
                                case(0x0d): keyvalue=3; break;
                                case(0x0e):        keyvalue=4; break;
                        }
                   GPIO_KEY=0xf0;          //高四位输出高电平   翻转一下确定行
                   switch(GPIO_KEY)
                        {
                                case(0x70): keyvalue=keyvalue;    break;
                                case(0xb0):        keyvalue=keyvalue+4;  break;
                                case(0xd0): keyvalue=keyvalue+8;  break;
                                case(0xe0):        keyvalue=keyvalue+12; break;
                        }
                        while((a<50)&&(GPIO_KEY!=0xf0))        // 就算一直按着按键也会自动退出不然浪费资源
                        {
                                delay(1000);
                                a++;
                        }
                }
        }
}


void main()                           //主函数
{       
        LSA=0;
        LSB=0;
        LSC=0;
        while(1);                  //在这里循环
        {
         keydown();
         GPIO_DIG=smgduan[keyvalue];  
        }


}

*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?KEYDOWN?点亮LED
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?CO?点亮LED

我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 金钱 , 目前已有3人回答

回复

使用道具 举报

6

主题

193

帖子

826

积分

超级版主

Rank: 8Rank: 8

积分
826
发表于 2020-1-4 14:38:45 | 显示全部楼层
开发板是什么型号,打开例程和您写的对比下,尤其是IO
回复

使用道具 举报

1

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2020-1-4 14:45:56 | 显示全部楼层
loyalboy 发表于 2020-1-4 14:38
开发板是什么型号,打开例程和您写的对比下,尤其是IO

晋中科技HC6800-ES V2.0开发板
回复

使用道具 举报

6

主题

193

帖子

826

积分

超级版主

Rank: 8Rank: 8

积分
826
发表于 2020-1-7 09:10:07 | 显示全部楼层
参考下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-2 22:21 , Processed in 0.100957 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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