关于c51语言的小问题

2019-07-16 01:36发布

      c51语言中全局变量是否可以重复再多个函数中使用,一般的c和c++语言中是可以的,单片机的c51语言是否可以呢????
我用一个例子试了一下,发现答案是不可以重复出现。
      以下是我的程序,关于59s计时器的程序。用HL-1单片机开发板下载试验的。
      程序如下:


    #include<reg51.h>#define uint unsigned int
#define uchar unsigned char
//sbit WE=P2^7;
//sbit DU=P2^6;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={ 0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F,  //"9"
                                        };
uchar a,b,c,d;
uchar data_h,data_l;

void delay(uint k)
{
        for(a=k;a>0;a--);
                for(b=120;b>0;b--);
}


void display()
{
       
        P0=table[data_l];
        dula=1;
        dula=0;
        //DU=1;
        //DU=0;
        P0=0xfd;
        wela=1;
        wela=0;
        //WE=1;
        //WE=0;
        delay(5);

       
        P0=table[data_h];
        dula=1;
        dula=0;
        //DU=1;
        //DU=0;
        P0=0Xfe;
        wela=1;
        wela=0;
        //WE=1;
        //WE=0;
        delay(5);
}

void int_T0 ()interrupt 1
{
       
        TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        c++;
}

void main()
{
        TMOD=0x01;
        TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        EA=1;
        ET0=1;
        TR0=1;
        while(1)
         {
                if(c==20)
                {
                        c=0;
                        d++;
                        if(d==60)
                        {
                                d=0;
                        }
                }
                data_l=d%10;
                data_h=d/10;
                display();
        }
}



求解。请大神们帮忙!谢谢了!




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。