|
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人回答
|
|