今天学习到了通过延时函数和for循环来做一个简单的PWM输出,来控制LED进行渐变。下面是我自已对这处程序的理解 #include// 调用REGX52.H这个文件,简单理解就是把这个文件内的东西放到自已的程序里。 void Delay(unsigned int t); // 定义一个延时函数Delay, unsigned int t是定义一个0-65535的变量 { while (--t);// 通过循环while 从65535自减到0就会跳出程序,通过自减来实现延时。 } void main()//主程序入口。 不管多复杂的程序 主程序只有一个 { unsigned int T=500,Toff=0;//两个0-65535的变量,赋初值 T=500 Toff=0; while (1)//进入循环,下面的程序会一直循环执行。 { for (Toff=1;Toff 0;Toff--)//for循环,先初始化Toff=T-1,然判断Toff>0是否成立,如果成立则执行下面大括内的程序,再进行Toff--,因为T=500, Toff=T-1(499) , 当Toff自减499次时Toff=0。Toff>0的条件不成立,跳出程序。 { P0=0X01;//转换为二进制就是0000 0001 意思是P0口的最位输出高电平,点亮LED. Delay (Toff); // 这里的延时从499减到1每运行一次程序延时缩短一点 P0=0X00;//转换为二进制就是0000 0000 意思是P0口全输出低电平,LED灭 Delay (T-Toff); 这里的延时从1自加到499 每运行一次程序延时加长一点 } } } 上电之后,Led的亮度从最暗逐渐变到最亮,然后从最亮又慢慢的变到最暗的状态,从而实现了一个呼吸灯的效果。 这是我学习了一段时间总结下来的经验。当然有很多地方我自己理解的,也不是很到位,希望大家可以指出来 以上内容纯手打,请不要搬运哦。如果你觉得不错请关注!