立即注册 登录
返回首页

uid:270142的个人空间

日志

这个程序有什么问题么

已有 516 次阅读2018-1-2 13:36

void Delayms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
#if FOSC == 11059200L
for(j=0;j<114;j++);
#elif FOSC == 12000000L
 for(j=0;j<123;j++);
#elif FOSC == 24000000L
for(j=0;j<249;j++);
#else
for(j=0;j<114;j++);
#endif
}
//ms延时函数
void Delay_xms(uint x)
{
 uint i,j;
 for(i=0;i<x;i++)
  for(j=0;j<112;j++);
}
//***************************************顺时针转动
void MotorCW(void)
{
 uchar i;
 for(i=0;i<4;i++)
  {
   MotorData=phasecw[i];
   Delay_xms(3);//转速调节
  }
}
//*******************************************逆时针转动
void MotorCCW(void)
{
 uchar i;
 for(i=0;i<4;i++)
  {
   MotorData=phaseccw[i];
   Delay_xms(3);//转速调节
  }
}
//********************************************停止转动
void MotorStop(void)
{
 MotorData=0x00;
}
 //********************************************加速运动
void Moterspeed(void)
{  uchar i;
speed=30;
for(i=0;i<800;i++)
 {     for(i=0;i<4;i++)
        {
         MotorData=phasecw[i];
         Delay_xms(speed);//转速调节
        }
speed--;
if(speed<4)  
  {
   speed=30;    //重新开始减速运动
   MotorStop();
   Delay_xms(500);
  }  
  }  
 }
/*******************************************************************************
* 函 数 名 :main
* 函数功能 :主函数
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void main()
{   EA = 1;//总中断
    IT0=1;
EX0 = 1; //使能 INT0 外部中断
IT0 = 1; // 触发方式为脉冲负边沿触发
IT1=1;
EX1 = 1; //使能 INT1 外部中断
IT1 = 1; // 触发方式为脉冲负边沿触发
TMOD=0x66;
TH0=0xff;
TL0=0xff;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
TH1=0xff;
TL1=0xff;
MotorStop();
while(1)
switch(m)
  case 1: MotorCW();break; //反转
  case 2: MotorCCW();break;//正转
  case 3: MotorStop();break;//停止
  case 4: Moterspeed();break;//加速
}
}
}

/*******************************************************************************
* 函 数 名 :Exit0Int
* 函数功能 :外部中断0 ISR
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void Exit0_Int() interrupt 0 
{  
  Delayms(30);      //延时30ms,去掉这行会出现按一下中断几次的情况 
  if(key1 == 0)    //对按键进行抗干扰处理 
  { 
   LED1= !LED1;   
   m=3;  
  } 
/*******************************************************************************
* 函 数 名 :Exit1Int
* 函数功能 :定时器中断0 ISR
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void Exit_1Int() interrupt 1
  Delayms(30);      //延时30ms,去掉这行会出现按一下中断几次的情况 
  if(key3 == 0)    //对按键进行抗干扰处理 
  { 
    LED3= !LED3;
m=2;
Delayms(30);
  } 
 /*******************************************************************************
* 函 数 名 :Exit2Int
* 函数功能 :外部中断0 ISR
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void Exit_2Int() interrupt 2 
{
  Delayms(30);      //延时30ms,去掉这行会出现按一下中断几次的情况 
  if(key2 == 0)    //对按键进行抗干扰处理 
  { 
    LED2 = !LED2; 
m=1;
  } 
}
 /*******************************************************************************
* 函 数 名 :Exit3Int
* 函数功能 :定时器中断1 ISR
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void Exit3_nt() interrupt 3 
{
  Delayms(30);      //延时30ms,去掉这行会出现按一下中断几次的情况 
  if(key4== 0)    //对按键进行抗干扰处理 
  { 
    LED4 = !LED4;
m=4;
  } 
}

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部