|
請(qǐng)問(wèn)此51單片機(jī)程序哪錯(cuò)了
編譯時(shí)總提示
XS.C(9): error C247: non-address/-constant initializer
找了幾個(gè)小時(shí)也找不到原因
先謝了
程序如下:
#include "xs.h"
#include <reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//u8 dx=P1;
u8 GPIO_KEY=P2;
void delay(u16 i)
{
while(i--);
}
void dtxs(u8 x) //將參數(shù)x在8位動(dòng)態(tài)數(shù)碼管上顯示為二進(jìn)制碼
{
u8 i,h;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
case(4):
LSA=0;LSB=0;LSC=1; break;
case(5):
LSA=1;LSB=0;LSC=1; break;
case(6):
LSA=0;LSB=1;LSC=1; break;
case(7):
LSA=1;LSB=1;LSC=1; break;
}
h=x&0x80;
if(h=1)
{
P1=smgduan[1];
}
else
{
P1=smgduan[0];
}
delay(100);
x<<1;
P1=0x00;
}
}
unsigned char dtkey() //4x4矩陣按鍵掃描返回0~15之間的數(shù)
{
u8 KeyValue;
char a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=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=2;break;
case(0X0e): KeyValue=3;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(100);
a++;
}
return KeyValue;
}
unsigned char zfdz() //將矩陣按鍵返回值轉(zhuǎn)為二進(jìn)制的一個(gè)字符,按一次后等待片刻如果再次有按鍵按下則第一次按為前四位,第二次為后四位
{
u8 i,j,k,a;
j=0;
while(j<=1)
{
i=dtkey();
if(i=0)
{
k=0x00;
}
else
{
for(;i>=1;i--)
{
k=0x00+1;
}
}
GPIO_KEY=0x0f;
if(GPIO_KEY=0x0f)
{
while((a<100)&&(GPIO_KEY=0x0f))
{
delay(100);
a++;
}
goto ttl;
}
j++;
}
ttl:return k;
return k;
}
|
|