微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 89S51输出信号来驱动一个步进马达c程序

89S51输出信号来驱动一个步进马达c程序

时间:11-18 来源:互联网 点击:
这个程序利用89S51输出信号来驱动一个步进马达/*

Target:89S51

程序描述:这个程序利用89S51输出信号来驱动一个步进马达*/

/* ***************************************************** */

#include

#define TIMER0_COUNT 0xEE11/*10000h-((12,000,000/(12*FREQ))*/

#define STOP 0

#define FORWARD 1

#define BACKWARD 2

char gotkey();

code forward[4]={0XFE,0XFD,0XFB,0X07};

code backward[4]={0X07,0XFB,0XFD,0XFE};

unsigned char timer0_tick=0,i=0,times=100,status=1;

static void timer0_isr(void) interrupt TF0_VECTOR using 1

{

TR0=0;

TL0=(TIMER0_COUNT & 0x00FF);

TH0=(TIMER0_COUNT >> 8);

TR0=1;

timer0_tick++;

if (timer0_tick==times) {

i++;

if(i==4) i=0;

timer0_tick=0;

if (status==FORWARD) P1=forward[i];

if (status==BACKWARD) P1=backward[i];

}

}

static void timer0_initialize(void)

{

EA=0;

timer0_tick=0;

TR0=0;

TMOD=0x01;

TL0=(TIMER0_COUNT & 0x00FF);

TH0=(TIMER0_COUNT >> 8);

PT0=0;

ET0=1;

TR0=1;

EA=1;

}

void main (void) {

char command;

timer0_initialize();

do {

command=gotkey();

if(command==15) status=FORWARD; //按下F键

if(command==11) status=BACKWARD; //按下B键

if(command==12) status=STOP; //按下C键

if((command==10) && (times>1)) times=times/2;

//按下A键

if(command==13) times=times*2; //按下D键

} while (1); /* 无穷循环 */

}

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

网站地图

Top