关于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();
}
}
求解。请大神们帮忙!谢谢了!
我用一个例子试了一下,发现答案是不可以重复出现。
以下是我的程序,关于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();
}
}
求解。请大神们帮忙!谢谢了!
什么意思呀?大神!