高性能软件PWM程序,最高可达1.558KHz,8bit@24MHz标准8051
高速模拟PWM程序(C51),可达1.114KHz,8bit分辨率@24MHz标准8051#include <reg52.h>
sbit PWM = P3^7;
unsigned char pwm_count,pwm_value;
void main(void)
{
pwm_value=80;
while(1)
{
pwm_count++;
if(pwm_count==pwm_value)
{
PWM=0;
}
if(pwm_count==0)
{
PWM=1;
}
}
}
仅6行,编译后只有10字节的软件模拟PWM程序(ASM),42级5位半分辨率,7.8125KHz@24MHz8051
ORG0000H
INIT: SETB TR0
MAIN: MOVA,#80 ;PWM值,0-255
SUBB A,TL0
MOVP3.7,C
SJMP MAIN
END
高速模拟PWM程序(ASM),可达1.558KHz,8bit@24MHz标准8051
ORG 0000H
MAIN: INC A
CJNE A,#10,BDY
SETB P3.7
SJMP MAIN
BDY: JNZ MAIN
CLR P3.7
SJMP MAIN
END 强!必须顶!!!!!!!!!!!!!!!!!!!!! 最好用定时器中断来实现,你这一开PWM,其它事都做不了了. 性能果然够高,可是一开了之后单片机只能做PWM输出了。 没神马意义。就一io翻转程序{:titter:} 看到标题的时候就猜到你的程序会是什么样子的了……果然,你的单片机除了PWM其他什么事都干不了。 备用参考,谢谢! 学习,再学习!!!{:smile:} 就算stc随便整个能PWM的片子也跑好几十K了。 感觉没啥用- - 误导初学者 ...{:sweat:}
IO翻转么? 哦,原来这样高速 原来是这样的 已经达到飞机的速度了{:funk:}{:funk:}{:funk:} 这有什么用?什么都不能做,就空跑PWM?调节频率、占空比都不行啊 文西,你这太阳能手电筒怎么用?{:lol:} 我可没说我的程序如何实用,我只是简单做个测试,晒一下思路而已。
如果能有更高的程序欢迎贴上来。
硬件PWM不在本帖讨论范围。随便一个UC3842都能出几百Khz的PWM。 试试吧,挺好的 换成中断写就OK了 skynet 发表于 2012-6-13 15:38 static/image/common/back.gif
文西,你这太阳能手电筒怎么用?
有太阳就亮,没太阳就灭{:lol:} {:lol:} {:lol:} {:lol:} {:lol:} 谢谢楼主的分享!! 写这样的程序有意义吗
还是乖乖用硬件的吧!没有太大必要。
页:
[1]