51单片机定时器产生任意占空比PWM

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

晶振12M任意占空比方波输出如果是占空比任意,现在考虑12M晶振,所以机器周期Tcy为1s。定时器工作方式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)110−6=1010−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;}

1 / 1
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功