您的位置 首页 FPGA

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

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

这个程序使用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); /* 无量循环 */

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/266129.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部