两下滑线处一直提示,该如何改正呢?

 #include<REGX51.H>

#define LED_BIGY P2

unsigned char shumaguan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

sbit k1 = P1^0;

sbit k2 = P1^1;

void delay(unsigned int t)
{
    unsigned int t1;
    t1=t;
    while(t1--);
}
void main(void)
{
       if(k1==1)
     {
         delay(1000);
        if(k1==1)
        {
         shumaguan=shumaguan[1];
        }
        while(!k1);
     }
     if(k2==1){
         delay(1000);
        if(k2==1)
        {
         shumaguan=shumaguan[2];
        }
        while(!k2);
     }


}
两下滑线处一直提示led.c(24): error C213: left side of asn-op not an lvalue

shumaguan=shumaguan[1]; 这样的赋值是不被允许的。

因为shumaguan 是一个数组

shumaguan[1] 是一个字符

将字符变量赋值给数组变量 用一个外部变量 char a 或者内部变量 char a去接受其中的值吧。

你应该定义一个全局的变量去保存这个数据。

 #include<REGX51.H>

#define LED_BIGY P2

unsigned char shumaguan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

sbit k1 = P1^0;

sbit k2 = P1^1;
char shumaguanTemp;
void delay(unsigned int t)
{
    unsigned int t1;
    t1=t;
    while(t1--);
}
void main(void)
{
       if(k1==1)
     {
         delay(1000);
        if(k1==1)
        {
         shumaguanTemp=shumaguan[1];
        }
        while(!k1);
     }
     if(k2==1){
         delay(1000);
        if(k2==1)
        {
         shumaguanTemp=shumaguan[2];
        }
        while(!k2);
     }


}

这样就不会报错了,而且记录了你数组里面的那个值。

你这两句赋值的目的是什么呢?知道目的才能确定如何来修改

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632