程式碼如下:
#include
#define uchar unsigned char
sbit led=P1^0;
uchar code duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code wei[3]={0x06,0x05,0x03};
void delay(uchar c);
void ini_() //初始化函式,設定中斷觸發方式,開中斷
{
EA=1;
IT0=0;
EX0=1;
}
void main()
uchar i;
ini_();
led=0; //由於微控制器上電之後,所有的IO口預設是高電平,而要求是開始不亮,所以要將P1.0口開始設定為低電平。
while(1)
for(i=0;i
P2=wei[i];
P0=duan[i];
delay(35);
void led_() interrupt 0 //外部中斷0函式,中斷函式不需要申明
led=1; //在中斷中讓燈亮起來
delay(1);
void delay(uchar c)
uchar a,b;
for(c;c>0;c--)
for(a=38;a>0;a--)
for(b=80;b>0;b--);
接線方法:
微控制器的P2.5,P2.6,P2.7口分別接三位動態數碼管的位選端,P0口接動態數碼管的段選端。然後,P1.0口接一個電阻串聯一個LED燈然後接地,電阻取200~470歐之間就行,是一個限流電阻。中斷用的是外部中斷0,要觸發中斷的時候,就用一根杜邦線一端接地,一端接到微控制器的P3.2口就行,這樣,就滿足了你的要求了。
外部中斷的觸發方式有低電平觸發和下降沿觸發。到底是那種觸發方式,要設定中斷允許暫存器中IT0的值,如果IT0=0,像我寫的程式,就是低電平觸發,如果為1,就是下降沿觸發。
燈不是一定要接到P3.2口上的。中斷要執行的任務是在中斷函式中寫程式碼控制的,就像我寫的程式碼中,你只需要控制LED燈接的那個IO口就行了。
程式碼如下:
#include
#define uchar unsigned char
sbit led=P1^0;
uchar code duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code wei[3]={0x06,0x05,0x03};
void delay(uchar c);
void ini_() //初始化函式,設定中斷觸發方式,開中斷
{
EA=1;
IT0=0;
EX0=1;
}
void main()
{
uchar i;
ini_();
led=0; //由於微控制器上電之後,所有的IO口預設是高電平,而要求是開始不亮,所以要將P1.0口開始設定為低電平。
while(1)
{
for(i=0;i
{
P2=wei[i];
P0=duan[i];
delay(35);
}
}
}
void led_() interrupt 0 //外部中斷0函式,中斷函式不需要申明
{
uchar i;
led=1; //在中斷中讓燈亮起來
while(1)
{
for(i=0;i
{
P2=wei[i];
P0=duan[i];
delay(1);
}
}
}
void delay(uchar c)
{
uchar a,b;
for(c;c>0;c--)
for(a=38;a>0;a--)
for(b=80;b>0;b--);
}
接線方法:
微控制器的P2.5,P2.6,P2.7口分別接三位動態數碼管的位選端,P0口接動態數碼管的段選端。然後,P1.0口接一個電阻串聯一個LED燈然後接地,電阻取200~470歐之間就行,是一個限流電阻。中斷用的是外部中斷0,要觸發中斷的時候,就用一根杜邦線一端接地,一端接到微控制器的P3.2口就行,這樣,就滿足了你的要求了。
外部中斷的觸發方式有低電平觸發和下降沿觸發。到底是那種觸發方式,要設定中斷允許暫存器中IT0的值,如果IT0=0,像我寫的程式,就是低電平觸發,如果為1,就是下降沿觸發。
燈不是一定要接到P3.2口上的。中斷要執行的任務是在中斷函式中寫程式碼控制的,就像我寫的程式碼中,你只需要控制LED燈接的那個IO口就行了。