|
单片机一箭穿心的学习- //作者:成长路DIY
- //品名:成长路爱心灯套件
- #include <reg52.h>
- #include <intrins.h>
- #define uint unsigned int
- #define N 2 //亮暗的速率
- //#define T 100 //PWM的周期
- //sbit led=P1^0;
- void pwm(int x);
- void delayms(uint Ms);
- void main()
- {
- int T=600;
- int t=0;
- char f=0;//亮暗标志,0为亮
- while(1)
- {
- //led=0;
- P0=0x00;
- P1=0x00;
- P2=0x00;
- P3=0x00;
- pwm(t);//Toff,亮的时间
- // led=1;
- P0=0xff;
- P1=0xff;
- P2=0xff;
- P3=0xff;
- pwm(T-t);//Ton,暗的时间
- if(!f) t+=N+1;//亮速率较快,模拟呼吸
- else t-=N;//暗速率较慢
- if(t>T) {f=1;t=T;}//超过最大值时,返回最大值,标志为暗
- if(t<0)
- {
- f=0;
- t=0;
- delayms( 500);
- T+=10;
- if(T>=650)T=600;
- }//超过最小值时,返回最小值,标志为亮
-
- }
- }
- void pwm(int x)
- {
- while(x--);
- }
- /*====================================================================
- 设定延时时间:x*1ms
- ====================================================================*/
- void delayms(uint Ms)
- {
- uint i,TempCyc;
- _nop_();
- for(i=0;i<Ms;i++)
- {
- TempCyc =70;
- while(TempCyc--);
- }
- }
复制代码
|
|