精品文档
随意编辑
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define CLK_WISE 0//顺时针方向转动
#define INVERSE 1//逆时针方向转动
bit direction=CLK_WISE;/***方向标志,取值为 CLK_WISE 或 INVERSE*/
static uchar speedcount=0;//加速标志,越大转速越快,最大到 7,然后回归到 0,循环。
//程序中可以依据它来改变占空比
uchar step[8]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03};//8 个步
uchar th_0[8]={0x5D,0x85,0x9E,0xAE,0xBA,0xC2,0xC9,0xCF};//8 个定时器值,高 8 位
uchar tl_0[8]={0x3D,0xEE,0x58,0x9E,0x3E,0xF7,0xBF,0x2C};//8 个定时器值,低 8 位
int step_i=0;//当前处于哪一步
/***定时器 t0***/
void time0(void) interrupt 1 using 1
{
P2=step[step_i];//输出电机控制信号
if(direction==CLK_WISE) //顺时针转
step_i++;
else
step_i--;//逆时针转
if (step_i>7)//顺时针到最后一步,需要调整到第一步
step_i=0;