高性能软件PWM程序,最高可达1.558KHz,8bit@24MHz标准8051

2020-01-12 17:17发布

  1. 高速模拟PWM程序(C51),可达1.114KHz,8bit分辨率@24MHz标准8051

  2. #include <reg52.h>

  3. sbit PWM = P3^7;
  4. unsigned char pwm_count,pwm_value;

  5. void main(void)
  6. {
  7. pwm_value=80;
  8. while(1)
  9.   {
  10.   pwm_count++;
  11.   if(pwm_count==pwm_value)
  12.     {
  13.     PWM=0;
  14.     }
  15.   if(pwm_count==0)
  16.     {
  17.     PWM=1;
  18.     }
  19.   }
  20. }


  21. 仅6行,编译后只有10字节的软件模拟PWM程序(ASM),42级5位半分辨率,7.8125KHz@24MHz8051
  22. ORG  0000H
  23. INIT: SETB TR0
  24. MAIN: MOV  A,#80        ;PWM值,0-255
  25.   SUBB A,TL0
  26.   MOV  P3.7,C
  27.   SJMP MAIN
  28.   END

  29. 高速模拟PWM程序(ASM),可达1.558KHz,8bit@24MHz标准8051
  30. ORG          0000H
  31. MAIN:         INC    A
  32.                   CJNE A,#10,BDY
  33.                   SETB P3.7
  34.                   SJMP MAIN
  35. BDY:          JNZ    MAIN
  36.                   CLR    P3.7
  37.                   SJMP MAIN
  38.                   END
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
yue621
1楼-- · 2020-01-12 19:04
强!必须顶!!!!!!!!!!!!!!!!!!!!!
hsztc
2楼-- · 2020-01-13 00:02
最好用定时器中断来实现,你这一开PWM,其它事都做不了了.
sdf159372008
3楼-- · 2020-01-13 03:35
 精彩回答 2  元偷偷看……
jetli
4楼-- · 2020-01-13 06:48
没神马意义。就一io翻转程序
XA144F
5楼-- · 2020-01-13 08:41
看到标题的时候就猜到你的程序会是什么样子的了……果然,你的单片机除了PWM其他什么事都干不了。
cjr82123
6楼-- · 2020-01-13 12:03
备用参考,谢谢!