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