📄 motormain.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 + -