⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motormain.c

📁 串口控制8路舵机程序,本程序适用于III型实验板
💻 C
字号:
#include "at89x52.h"
#include "Motor\Motor.h"
#include "series\series.h"
#include "LedDigital\LedDigital.h"
#include "Sound\Sound.h"
#include "MotorMain.h"

//舵机度数控制                 0      45     90     135    180
//uint const code Motion[5] = {0xfc48,0xf8b6,0xf524,0xf192,0xee00};

//舵机位选指针
uchar MotorIndex=0x00;

//接收到的字节数(0-2)
uchar RCharCount=0x00;

/**************************************************************************
名称:void Timer0Init(void)
功能:定时/计数器0初始化程序
      计时2。5ms扫描8个舵机
**************************************************************************/
void Timer0Init(void)
{
    TH0=0x80;
	TL0=0x00;
	TMOD|=0x01;
	TR0=1;
}

/**************************************************************************
名称:void Timer1Init(void)
功能:定时/计数器1初始化程序
      控制正频宽
**************************************************************************/
void Timer1Init(void)
{
    TH1=0xe0;
	TL1=0x00;
	TMOD|=0x10;
	TR1=1;
}

/*************************************************************************
名称:void Timer2Init(void)
功能:定时/计数器2初始化程序
      产生波特率
**************************************************************************/
void Timer2Init(void)
{
    RCAP2H=0xff;
	RCAP2L=0xb8;
    RCLK=1;
	TCLK=1;
	TR2=1;
}

/***************************************************************************
名称:void CommInit(void)
功能:串口初始化程序
***************************************************************************/
void CommInit(void)
{
    SM0=0;
	SM1=1;
	SM2=0;
	REN=1;
}

/***************************************************************************
名称:void SystemInit(void)
功能:系统初始化及开中断
***************************************************************************/
void SystemInit(void)
{
   Timer0Init();
   Timer1Init();
   Timer2Init();
   CommInit();
   EA=1;
   ET2=1;
   ES=1;
   ET1=1;
   ET0=1;
}

/**************************************************************************
名称:void Timer0Server(void)interrupt 1
功能:确定正频宽
**************************************************************************/
void Timer0Server(void)interrupt 1
{
	P2=0x00;
}

/**************************************************************************
名称:void Timer1Server(void)interrupt 3
功能:产生正频宽
**************************************************************************/
void Timer1Server(void)interrupt 3
{
	TR1=0;
    TH1=0xee;
	TL1=0x00;
    MotorIndex%=8;  //舵机位选
    P2=0x01<<MotorIndex;
    TL0=MotorAngle[MotorIndex];
	TH0=MotorAngle[MotorIndex]>>8; //舵机角度控制数据
	MotorIndex++;
    LedDigitalDisplay(); //在数码管上显示舵机控制信息 
	TR1=1;
}

/***************************************************************************
名称:void CommInterServer(void)interrupt 4
功能:串口中断服务程序
***************************************************************************/
void CommInterServer(void)interrupt 4
{
   if(RI==1)
   {
      MotorCtrl[RCharCount]=CommReceive();
	  RCharCount++;
	  if(RCharCount==0x04)
	  {   
	      RCharCount=0x00;
		  SetMotorCtrl(); //设置舵机控制信息
		  LedDigitalTransport(MotorCtrlInfoToL()); //设置舵机控制信息的显示内容
	  }
	  RI=0;
   }
}

/******************************************************************************
* 名称: main ()
* 功能: 主函数,整个程序的入口  
******************************************************************************/
void main()
{
	SystemInit();
	while(1)
	{
		;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -