您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 统计图表 > 51单片机定时器产生任意占空比PWM
晶振12M任意占空比方波输出如果是占空比任意,现在考虑12M晶振,所以机器周期Tcy为1s。定时器工作方式1最长定时为65536×1×10-6=65.536ms如果要输出周期为1s的任意占空比的方波。那可以把1s分为100份,每份中断一次。然后在中断里面计数(比如全局变量num)加一。加到100之后,表示一个周期结束。这样就可以控制每一份的电平的高低了。如果,占空比为30%,那么也就是num小于等于100×30%=30的时候,输出高电平,其余输出低电平就可以了。如果占空比为a(百分号的形式),那么也就是num小于等于100×a的时候输出高电平,其余输出低电平就可以了。现在考虑定时器的初值如何设定,由于定时器需要在1s/100也就是10ms的时候进入一次中断进行判断。如果采用方式1,那么因为(216−X)110−6=1010−3,所以定时器的初值为X=65536–1000.#includereg52.h//头文件sbitoutput=P1^1;//输出端unsignedcharnum=1;//辅助计时unsignedinta=0.3;占空比a可以任意设定voidInit(void)//初始化函数{//对于定时器一般初始化需要六步TMOD=0x01;TH0=(65536-1000)/256;//(65536-1000)为定时器初值,定时10msTL0=(65536-1000)%256;EA=1;ET0=1;TR0=1;}main(){Init();while(1){if(num=100*a)output=1;//使占空比为aelseoutput=0;}}voidTimer_0(void)interrupt1//中断函数{TH0=(65536-1000)/256;//TL0=(65536-1000)%256;num++;if(num100)num=1;}
本文标题:51单片机定时器产生任意占空比PWM
链接地址:https://www.777doc.com/doc-4293476 .html