微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 蓝牙控制舵机995转向,但是实现不了,求帮忙看下程序

蓝牙控制舵机995转向,但是实现不了,求帮忙看下程序

时间:10-02 整理:3721RD 点击:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit led3=P2^3;
sbit pwm =P3^2 ;          //PWM信号输出
uint c=0,a=0,t=0;
unsigned char  Buffer;

/*延时子程序*//*         
void delay(unsigned char i)
{
  unsigned char j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}

/*定时器0 工作1*/                 
void Time0_Init()          //定时器初始化
{
TMOD = 0x01;           //定时器0工作在方式1   
IE   = 0x82;
EA=1;
TH0=(65536-100)/256;
TL0=(65536-100)%256;         //0.1ms 的高电平  
TR0=1;                 //定时器开始
}
/*中断1*/                            
void Time0_Int() interrupt 1 //中断程序
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
t++;
}
/*串口中断子函数*/
void Com_Int(void) interrupt 4
{
EA = 0;
if(RI == 1) //当硬件接收到一个数据时,RI会置位
{
Buffer=SBUF;
RI = 0;
}
EA = 1;
}                   

/*串口初始化,晶振11.0592,波特率9600,使串口中断*/
void Com_Init(void)
{
TMOD = 0x20;  //定时器1工作于方式2,8位自动重载模式,用于产生波特率
PCON &= 0x7f;          //是设置波特率不加倍
SCON = 0x50;          // REN=1允许串行接受状态,串口工作模式1,
TH1 = 0xFd; //设置波特率 9600
TL1 = 0xFd;
TR1 = 1; //启动定时器1
ES = 1; //开串口中断
EA = 1; //开总中断
}
void send(unsigned char a)      //单字节数据发送
{                        
         TI=0;         
         SBUF=a;
         while(TI==0);
//         TI=0;
         if(c%2)     //发送指示灯标志,每接收一次,此灯亮灭交替
         led3=1;
         else
          led3=0;
         c++;
}          
                       
void degree90()
{
if(t<15)               
pwm=1;
else
   {
          pwm=0;
          if(t==200)
      t=0;
   }
}
void degree45()
{
if(t<10)               
pwm=1;
else
   {
          pwm=0;
          if(t==200)
      t=0;
   }
}
void degree135()
{
if(t<20)               
pwm=1;
else
   {
          pwm=0;
          if(t==200)
      t=0;
   }
}                  
void main()  
{        
        Com_Init();//串口初始化
        Time0_Init(); //定时器初始化
        while(1)
        {
        switch(Buffer=SBUF)         
        {       
        case 1:
                        degree90();
                        send(Buffer);                       
                        break;
       
        case 2:
                        degree45();
                        send(Buffer);                                                                       
                        break;
          
        case 3:
                        degree135();
                        send(Buffer);
                        break;
       
        default:
                        send(Buffer);
                        break;        
        }               
    }
}

解决了,晚点完成了作品后跟大家分享下。我菜鸟努力的小成果

小编 你是啥问题呢 说好的分享呢。

按键输入怪怪的.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top