#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
//电机IO
#define GPIO_MOTOR P1
unsigned char code FFW[8]={0xf4,0xf5,0xf1,0xf9,0xf8,0xfa,0xf2,0xf6}; //管脚
unsigned char Direction=0,Speed=0;
unsigned char receiveData='0';
void UsartConfiguration();
void Delay(unsigned int t);
void Motor();
/*******************************************************************************
- 函 数 名 : main
- 函数功能 : 主函数
- 输 入 : 无
- 输 出 : 无 *******************************************************************************/
void main(void)
{
//unsigned char i;
UsartConfiguration();
Speed=180; //默认初始速度 数字越小 延时时间越短 速度越快
while(1)
{
if(receiveData=='1') //转动
{
//消除抖动
Direction=1;
receiveData='0';
}
Motor();
Direction=0;
}
}
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
//TMOD=0X20; //设置计数器工作方式2
TMOD=0X21; //设置计数器工作方式2 和定时器0
PCON=0X80; //波特率加倍
//TH1=0XF4; //计数器初始值设置,注意波特率是4800的
//TL1=0XF4;
TH1=0XFA; //计数器初始值设置,注意波特率是9600的
TL1=0XFA;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1;
//打开计数器
}
void Usart() interrupt 4
{
receiveData=SBUF;//出去接收到的数据
RI = 0;//清除接收中断标志位
}
/*******************************************************************************
- 函 数 名 : Motor
- 函数功能 : 电机旋转函数
- 输 入 : 无
- 输 出 : 无 *******************************************************************************/
void Motor()
{
unsigned char i;
for(i=0;i<8;i++)
{
if(Direction==1)
{
GPIO_MOTOR = FFW[i];
}
Delay(Speed); //调节转速
}
}
/*******************************************************************************
- 函 数 名 : Delay
- 函数功能 : 延时
- 输 入 : t
- 输 出 : 无
*******************************************************************************/
void Delay(unsigned int t)
{
while(t--) { ; } }