微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于c51语言的小问题

关于c51语言的小问题

时间:10-02 整理:3721RD 点击:
      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();
        }
}

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


什么意思呀?大神!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top