1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2560|回復(fù): 2
收起左側(cè)

51單片機(jī)控制s90舵機(jī),舵機(jī)一直動(dòng)不了 求大神

[復(fù)制鏈接]
ID:654463 發(fā)表于 2019-12-2 17:33 | 顯示全部樓層 |閱讀模式
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit ControlPort=P3^5;
#define led P2
u8 ServePwmValue=1500;//pwm初始值1500??
//定時(shí)器函數(shù)
void Timer0_Int0()
{
  TMOD=0x01;   //???????1???????/??????T0
  TH0=0;   
  TL0=0;
  TF0=0;
  ET0=1;   //打開中斷允許位
}
//定時(shí)pwm時(shí)間?
void TimerValue(u16 pwm)
{
     u16 Value;
  TR0=0;
  Value=pwm;
  TL0=Value;      //??16λ????????8λ???????16λ???8λ???8λ
  TH0=Value>>8;
     TR0=1;
}
//延時(shí)ms函數(shù)
void DelayMs(u16 ms)
{
u16 i,j;
for(i=0;i<85;i++)  //89???????85,12??е??????800
  for(j=0;j<ms;j++);
}
void main()
{
  Timer0_Int0();
ControlPort=0;
EA=1;
while(1)
{
   
    ServePwmValue=500;
      DelayMs(1000);
    ServePwmValue=1000;
      DelayMs(1000);
    ServePwmValue=1500;
      DelayMs(1000);
    ServePwmValue=2000;
      DelayMs(1000);
    ServePwmValue=2500;
      DelayMs(1000);
}
}
void Timer0() interrupt 1
{   
   
    static u16 i=1;
switch(i)
{
     //高電平的時(shí)間
    case(1):
              ControlPort=1;
     TimerValue(ServePwmValue);
     break;
     //低電平的時(shí)間
    case(2):
       ControlPort=0;
     TimerValue(20000-ServePwmValue);
     break;
     i=0;
}
i++;
}

回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2019-12-4 23:05 | 顯示全部樓層
case(1):這樣寫也能通過么 ?
回復(fù)

使用道具 舉報(bào)

ID:642386 發(fā)表于 2019-12-8 11:44 | 顯示全部樓層
#include <reg52.h>


unsigned int HighRH=0;
unsigned int HighRL=0;
unsigned int LowRH=0;
unsigned int LowRL=0;


void ConfigPWM(unsigned int,unsigned char);


void ClosePWM();
void delay(unsigned int xms)
{
        unsigned int j;
  unsigned int k;
       
        for(j=xms;j>0;j--)
        for(k=110;k>0;k--);
       
}


void main()
{
        while(1)
        {
                ConfigPWM(50,3);
                delay(500);
                ConfigPWM(50,6);
                delay(500);
                ConfigPWM(50,9);
                delay(500);
                ConfigPWM(50,12);
                delay(500);
                ConfigPWM(50,15);
                delay(500);
        }
}



void ConfigPWM(unsigned int fr,unsigned char dc)
{
        unsigned int high,low;
        unsigned long tmp;
        tmp=(11059200/12)/fr;
        high=(tmp*dc)/100;
        low=tmp-high;
        high=65536-high+12;
        low=65536-low+12;
       
        HighRH=(unsigned char)(high>>8);
        HighRL=(unsigned char)high;       
        LowRH=(unsigned char)(low>>8);
        LowRL=(unsigned char)low;
       
       
        TMOD&=0xfd;
        TMOD|=0x01;
        TH0=HighRH;
        TL0=LowRH;
        ET0=1;
        TR0=1;
        P2=0xff;
       
        EA=1;
}



void Timer0(void) interrupt 1
{
        if(P2==0xff)
        {
                TH0=LowRH;
                TL0=LowRL;
                P2=0x00;
        }
        else
        {
                TH0=HighRH;
                TL0=HighRL;
                P2=0xff;
        }
}
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表