elephant00 发表于 2021-8-23 11:52

为什么用51单片机定时器输出PWM控制舵机会有很大的误差?

纯文本查看 复制代码
#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit pwm=P2^0;uint pwm_val;void delayms(uint xms);   //软件延时函数void timer_set(uint value);void main(){   TMOD=0X01;            //定时器初始化   TH0=(65536-1000)/256;       TL0=(65536-1000)%256;    EA=1;    ET0=1;    TR0=1;      while(1)   {      pwm_val=500;      delayms(1000);            pwm_val=1500;      delayms(1000);   }}void timer0() interrupt 1{   static uchar i=1;   TR0=0;      switch(i)            //两角度之间切换   {      case 1:                  {            pwm=1;            timer_set(pwm_val);         }break;      case 2:         {            pwm=0;            timer_set(20000-pwm_val);            i=0;         }break;      default: break;   }   i++;}void timer_set(uint value){   TH0=(65536-value)/256;   TL0=(65536-value)%256;   TR0=1;}void delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=125;j>0;j--);}

LcwSwust 发表于 2021-8-23 12:14

这排版太乱。
没看出来有误差。
为什么说它有“很大误差”?

m564522634 发表于 2021-8-23 16:51

你这排版格式 别人没法看呀,误差是哪里的误差,PWM 波型怎么样有测量过吗?

coody 发表于 2021-8-24 11:55

PWM是一个数字外设,怎么会有误差?

linxi6414 发表于 2021-8-24 23:22

看到这么多的delay,难道楼主是刚刚学的编程?
页: [1]
查看完整版本: 为什么用51单片机定时器输出PWM控制舵机会有很大的误差?