㈠ 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;