⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex5-5.c

📁 嵌入式C语言程序设计教材的程序例子代码
💻 C
字号:
/*
标题:范例 5-5
版本:1.0
Target:89S51
程序描述:这个程序利用89S51输出信号来驱动一个步进马达*/
/* ***************************************************** */
#include <REGX51.H>
#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);                           /* 无穷循环 */
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -