各位大侠,帮我看看这个程序为什么不能运行

2019-07-16 02:48发布

#include <reg51.h>       //51芯片管脚定义头文件#include <intrins.h>  //内部包含延时函数 _nop_();#define uchar unsigned char#define uint  unsigned intuchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};  //四相八拍正转编码uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};  ////四相八拍反转编码sbit  K1   = P3^2;       //正转sbit  K2   = P3^3;       //反转sbit  K3   = P3^4;       //停止sbit  BEEP = P3^6;       //蜂鸣器/********************************************************//*                                                  /* 延时t毫秒 /* 11.0592MHz时钟,延时约1ms                                     /*                                                      /********************************************************/void delay(uint t){                              uint k;   while(t--)   {     for(k=0; k<125; k++)     { }   }}/**********************************************************/void delayB(uchar x)    //x*0.14MS {   uchar i;   while(x--)   {     for (i=0; i<13; i++)     { }   } }/**********************************************************/void beep() {   uchar i;   for (i=0;i<100;i++)    {      delayB(4);     BEEP=!BEEP;                 //BEEP取反    }      BEEP=1;                    //关闭蜂鸣器 }/********************************************************//*/*步进电机正转/*/********************************************************/void  motor_ffw() {    uchar i;   uint  j;   for (j=0; j<8; j++)         //转1*n圈     {     if(K3==0)        {break;}                //退出此循环程序      for (i=0; i<8; i++)       //一个周期转45度        {          P1 = FFW;          //取数据          delay(2);            //调节转速        }    } }/********************************************************//*/*步进电机反转/*/********************************************************/void  motor_rev(){     uchar i; uint  j; for (j=0; j<8; j++)       //转1×n圈      {    if(K3==0)         {break;}               //退出此循环程序        for (i=0; i<8; i++)     //一个周期转45度        {          P1 = REV;          //取数据          delay(2);            //调节转速        }      } }/*********************************************************                                                       *  主程序                                               *                                                      *********************************************************/main() {       uchar r,N=64;             //N 步进电机运转圈数   while(1)    {        if(K1==0)  {        beep();for(r=0;r<N;r++)         {    motor_ffw();       //电机正转     if(K3==0)           {beep();break;}    //退出此循环程序     }      }  else if(K2==0)       {     beep();for(r=0;r<N;r++)         {       motor_rev();       //电机反转   if(K3==0)           {beep();break;}    //退出此循环程序 }       }    else    P1 = 0xf0;    } }/********************************************************/

按实验板上的K1按键步进电机正转
按实验板上的K2按键步进电机反转
按实验板上的K3按键步进电机停止
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。