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

[复制链接]
7331|4
 楼主| elephant00 发表于 2021-8-23 11:52 | 显示全部楼层 |阅读模式
[C] 纯文本查看 复制代码
#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,难道楼主是刚刚学的编程?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1031

主题

3946

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部