|
|
 - /*
- 點亮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必須先經過sbit定義,而不能直接用P1^0=0;否則編譯過不了
- }
- */
- //-----------------------------------------------------------------------------------------------------------
- /*
- //方2:總線方式點亮LED
- #include<reg52.h>
- void main()
- {
- P1=0xfd; //1111 1100 LED是共陽的,低電平時點亮,所以就是LED1和2燈被點亮
- }
- */
- //-----------------------------------------------------------------------------------------------------------
- /* 讓LED燈閃爍 采用位點亮+內部循環進行延時
- #include <reg52.h>
- sbit D1=P1^3; //隨便一個你也可改為P1^0,注意P要大寫的才可以
- unsigned int a;
- void main()
- {
- D1=0;
- for (a=0;a<=20000;a++) {}; //for循環 {}空操作即可形成延時效果
- D1=1;
- for (a=0;a<=20000;a++) {};
- }
- */
- //-----------------------------------------------------------------------------------------------------------
- /*
- //讓LED燈閃爍 采用位方式+delay延時函數方式
- #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);
- 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--); //程序停在這里,一直執行減法,直到a從51000減到0后退出循環,這就形成延時
- a=5100; //前面a已經減成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--) //循環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--) //循環8次
- {
- P1=temp;
- temp=_crol_(temp,1); //移動
- delay(100);
- }
- temp=0x7f; //注意這一句,如果沒有這一句,下面的語句循環是循環了,卻沒東西出來
- for (a=8;a>0;a--) //循環8次,即流水燈8個循環8次即可點亮8個
- {
- P1=temp;
- temp=_crol_(temp,-1); //移動
- delay(100);
- }
- }
復制代碼
|
|