|
- /*
- 点亮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);
- }
- }
复制代码
|
|