/* 點亮LED燈:方1 位操作方式 sbit D1=P1^0; 方2 總線方工 P1=0x??; 讓LED燈閃爍 */ /* //方1:位操作方式點亮LED #include<reg52.h> sbit D1=P1^0; //P1^0的P必須是大寫 void main() { D1=0; //使用P1^0必須先經(jīng)過sbit定義,而不能直接用P1^0=0;否則編譯過不了 } */ //----------------------------------------------------------------------------------------------------------- /* //方2:總線方式點亮LED #include<reg52.h> void main() { P1=0xfd; //1111 1100 LED是共陽的,低電平時點亮,所以就是LED1和2燈被點亮 } */ //----------------------------------------------------------------------------------------------------------- /* 讓LED燈閃爍 采用位點亮+內(nèi)部循環(huán)進行延時 #include <reg52.h> sbit D1=P1^3; //隨便一個你也可改為P1^0,注意P要大寫的才可以 unsigned int a; void main() { D1=0; for (a=0;a<=20000;a++) {}; //for循環(huán) {}空操作即可形成延時效果 D1=1; for (a=0;a<=20000;a++) {}; } */ //----------------------------------------------------------------------------------------------------------- /* //讓LED燈閃爍 采用位方式+delay延時函數(shù)方式 #include <reg52.h> sbit D1=P1^0; //位操作方式 unsigned int a; void delay(int x) //延時 { int a,b; for(a=x;a>0;a--) for(b=110;b>0;b--); } void main() { D1=0; delay(50); //調(diào)用延時 D1=1; delay(50); / } */ //----------------------------------------------------------------------------------------------------------- /* //讓3個燈一起閃爍 ,采用總線方式 #include<reg52.h> unsigned int a; void delay(int x) //延時 { int a,b; for(a=x;a>0;a--) for(b=110;b>0;b--); } void main() { P1=0xf8; //1111 1000,點亮前3個燈,3個燈一起閃爍 delay(500); P1=0xff; delay(500); } */ //----------------------------------------------------------------------------------------------------------- /* //讓LED燈閃爍 采用wlile方式 #include <reg52.h> sbit P10=P1^0; int a; void main() { while(1) { a=51000; P10=0; //點亮燈 while(a--); //程序停在這里,一直執(zhí)行減法,直到a從51000減到0后退出循環(huán),這就形成延時 a=5100; //前面a已經(jīng)減成0了,這里再給它個初值 P10=1; while(a--); //又從初值51000減到0為止,形成延時效果 } } */ //----------------------------------------------------------------------------------------------------------- /* //流水燈 ,在PIC單片機里流水燈只要設整個端的0x??值然后采用端口值=端口值<<1左移1位即可形成流水燈 //而在52單片機里卻不行,得用_crol關皺字,而這個關鍵字又是在另一頭文件intrins.h里,所以在開頭就得先包含它_ #include <reg52.h> #include <intrins.h> //因為要用到corol這一關鍵字 #define uchar unsigned char sbit P23=P2^3 ; sbit D1=P1^0; void delay(int x) { int a,b; for(a=x;a>0;a--) for(b=110;b>0;b--); } void main() { uchar a,temp; temp=0xfe; for (a=8;a>0;a--) //循環(huán)8次,即流水燈8個循環(huán)8次即可點亮8個 { P1=temp; temp=_crol_(temp,1); //移動 delay(100); } } */ //----------------------------------------------------------------------------------------------------------- //流水燈 :正流+倒流;在PIC里流水燈只要設整個端的0x??值然后采用端口值=端口值<<1左移1位即可形成流水燈 //而在52單片機里卻不行,得用_crol關皺字,而這個關鍵字又是在另一頭文件intrins.h里,所以在開頭就得先包含它 #include <reg52.h> #include <intrins.h> //因為要用到corol這一關鍵字 #define uchar unsigned char sbit P23=P2^3 ; sbit D1=P1^0; void delay(int x) { int a,b; for(a=x;a>0;a--) for(b=110;b>0;b--); } void main() { uchar a,temp; temp=0xfe; for (a=8;a>0;a--) //循環(huán)8次,即流水燈8個循環(huán)8次即可點亮8個 { P1=temp; temp=_crol_(temp,1); //移動 delay(100); } temp=0x7f; //注意這一句,如果沒有這一句,下面的語句循環(huán)是循環(huán)了,卻沒東西出來 for (a=8;a>0;a--) //循環(huán)8次,即流水燈8個循環(huán)8次即可點亮8個 { P1=temp; temp=_crol_(temp,-1); //移動 delay(100); } }