单片机/MCUwilliam hill官网
直播中

赵熹

11年用户 175经验值
私信 关注
[问答]

关于c51语言的小问题

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


    #include#define uint unsigned int
#define uchar unsigned char
//***it WE=P2^7;
//***it DU=P2^6;
***it dula=P2^6;
***it 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();
        }
}



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




回帖(2)

a752423208

2013-4-8 08:50:28
{:2:}{:2:}{:2:}
举报

赵熹

2013-4-8 12:39:45
引用: a752423208 发表于 2013-4-8 08:50

什么意思呀?大神!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分