m0_72990642 2022-12-14 17:37 采纳率: 75%
浏览 71
已结题

基于c51的sg90舵机问题

sg90舵机执行一次后就不再执行了。比如以下代码中,

void rou () interrupt 3
{
    
    TH1 = 0xfe;
    TL1 = 0x0c;
    if(round1 == 1){sg90 = 1;}//在这里给出高电平
    if(round1 == round){sg90 = 0;}//当达到指定时间时设为低电平。第一次round为5。第二次为3,但是第二次的时候舵机只响不转
    round1 ++;
        if(round1 == 40)//完成一个pvm波
    {
        round1 =0;
        led=0;      
        round2 ++;
    }
        if(round2 ==4)//当输出4个pvm波以后把round设为3。但是舵机只响不转
        {
      round=3;
      round1=0;
      round2=0;
      TR1=0;
      delay(3000);
      TR1=1;
      }
}

这是全部的代码

#include "reg52.h"
sbit sg90 = P0^2;
sbit led = P0^6;
static unsigned int round = 5;
static unsigned int round1 = 0;
static unsigned int round2 = 0;

void delay(int length)
{
    int i = 0;
    int j = 0; 
    for(;i<125;i++)
    {for(;j<length;j++){}}
}

void main()
{
    TMOD = 0X11;
    TH1 = 0XFE;
    TL1 = 0X0C;
    EA = 1;
    ET1 = 1;
    TR1 = 1;
    while(1);
    
}

void rou () interrupt 3
{
    
    TH1 = 0xfe;
    TL1 = 0x0c;
    if(round1 == 1){sg90 = 1;}
    if(round1 == round){sg90 = 0;}
    round1 ++;

    if(round1 == 40)
        {
            round1 =0;
            led=0;      
            round2 ++;
        }
if(round2 ==4){
    round=3;
    round1=0;
    round2=0;
    TR1=0;
    delay(3000);
    TR1=1;
}

}

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 系统已结题 12月28日
  • 已采纳回答 12月20日
  • 创建了问题 12月14日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line