《51单片机定时器产生任意占空比PWM(共1页).docx》由会员分享,可在线阅读,更多相关《51单片机定时器产生任意占空比PWM(共1页).docx(1页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上晶振12M任意占空比方波输出如果是占空比任意,现在考虑12M晶振,所以机器周期Tcy为1 ms。定时器工作方式1最长定时为65536110-6=65.536ms如果要输出周期为1s的任意占空比的方波。那可以把1s分为100份,每份中断一次。然后在中断里面计数(比如全局变量num)加一。加到100之后,表示一个周期结束。这样就可以控制每一份的电平的高低了。如果,占空比为30%,那么也就是num小于等于10030%=30的时候,输出高电平,其余输出低电平就可以了。如果占空比为a(百分号的形式),那么也就是num小于等于100a的时候输出高电平,其余输出低电平就可以了。现在
2、考虑定时器的初值如何设定,由于定时器需要在1s/100也就是10ms的时候进入一次中断进行判断。如果采用方式1,那么因为(216X)1106=10 103,所以定时器的初值为X=65536 1000.#include /头文件sbit output=P11; /输出端unsigned char num=1; /辅助计时unsigned int a = 0.3;占空比a可以任意设定void Init(void) /初始化函数/对于定时器一般初始化需要六步TMOD=0x01;TH0=(65536-1000)/256; /(65536-1000)为定时器初值,定时10msTL0=(65536-1000)%256;EA=1;ET0=1;TR0=1;main()Init();while(1)if(num100) num=1;专心-专注-专业