㈠ 51单片机程序修改
现在,你显示的是num1,其范围是0~60。
可以把它的上限,改为30,这就符合你的要求了。
另外再增加一个变量num2,其范围是0~60。
用它来控制红绿黄的交替变化,即可。
voiddisplay(ucharge,ucharshi)
{
if(num2<=25){P1=0xfe;}
elseif(num2<=30){P1=0xff;delay(2);P1=0xfd;}
elseif(num2<=60){P1=0xfb;}
……
}
……
voidtime0()interrupt1
{
TH1=(65536-5000)/256;//--应该是TH0=...
TL1=(65536-5000)%256;//--应该是TL0=...
num++;
if(num==10){
num=0;
num1++;
if(num1==30)num1=0;//用于显示秒数
shi=num1/10;
ge=num1%10;
num2++;
if(num2==60)num2=0;//用于控制变换
}
}
㈡ 单片机Keil C51 C语言多文件如何使用全局位变量跪拜!!
extern就可以。在一个文件里定义:
bdata m;
sbit x=m^1;
然后在另一个文件里声明:
extern bdata m;(如果不使用m可以不声明。)
extern bit x;
这样就可以使用了。如果变量较多,建议楼上的方法,用全局头文件。
㈢ 51单片机如何定义多位引脚
这么弄是不行的。51单片机是8位的单片机,一次处理8位也就是一个字节。不允许这么做。
你可以这么写
X=a; X是8位的,a存在X的低四位
P1=X<<4;