打印

单片机 C语言

[复制链接]
1839|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiagaokui|  楼主 | 2014-4-9 10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#include <reg51.h>
#define uchar unsigned char
#define uint  unsigned int

//四项八拍正转励磁顺序:A->AB—>B->BC->C->CD->D->DA
uchar code FFW[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};

//反转励磁顺序:AD->D->CD->C->BC->B->AB->A
uchar code REV[]={0x09,0x08,0x0C,0x04,0x06,0x02,0x03,0x01};

sbit K1=P3^0;          //正转
sbit K2=P3^1;           //反转
sbit K3=P3^2;            //停止

//延时                                                                                          
void delay(uintx)
{
   uchar i;
   while(x--) for(i=0;i<120;i++);
}

//正转
void SETP_MOTOR_FFW(uchar n)
{
    uchar i,j;
        for (i=0;i<5*n;i++)
        {
         for (j=0;j<8;j++)
          {
            if(K3==0) break;
                P1=FFW[j];
                delay(25);
           }
          }
}

//反转
void SETP_MOTOR_REV(uchar n)
{
    uchar i,j;
        for (i=0;i<5*n;i++)
        {
          for (j=0;j<8;j++)
          {
            if(K3==0)  break;
                P1=REV[j];
                delay(25);
           }
          }
}

//主程序
void main()
{
  uchar N=3;        //运转圈数
  while(1)
  {
    if(K1==0)
        {
          P0=0xFE;      //LED1点亮
          SETR_MOTOR_FFW(N);         //电机正传
          if(K3==0)         break;
         }
         else if(K2==0)
         {
           P0=0xFD;
           SETP_MOTOR_REV(N);        //电机反转
           if(K3==0)  break;
          }
          else
          {
            P0=0xFB;                  //LED3点亮
            P1=0x03;
           }
   }
}

有一个错误BUJINGDIANJI.C(20): error C202: 'x': undefined identifier 怎么解决?














相关帖子

沙发
tabu| | 2014-4-9 10:31 | 只看该作者
X没声明,延时那里

使用特权

评论回复
板凳
jiagaokui|  楼主 | 2014-4-9 13:48 | 只看该作者
是这样吗?
{
uchar i;
uint x;
while(x--) for(i=0;i<120;i++);

使用特权

评论回复
地板
QQ275000499| | 2014-4-9 15:04 | 只看该作者
void delay(uintx)
uint和X之间应该有个空格

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
四方动力 + 2 正解
5
rdfeps| | 2014-4-10 09:25 | 只看该作者
uintx  之间没有空格

使用特权

评论回复
6
zdh082| | 2014-4-10 11:57 | 只看该作者
学习

使用特权

评论回复
7
zoushilin| | 2014-4-10 17:41 | 只看该作者
我把你的程序跑了一遍,除了需要把void delay(uintx)改成void delay(uint x)之外。还有你的主程序调用电机正传时,子函数名写错了。你把字母P写成R了。。。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
jiagaokui + 1 很给力!
8
jialin123| | 2014-4-10 23:54 | 只看该作者
应该空格啊,要不系统就默认uintx是一个整体。

使用特权

评论回复
9
957895723| | 2014-4-11 09:32 | 只看该作者
void delay(uintx)的确应该是这里的事

使用特权

评论回复
10
jiagaokui|  楼主 | 2014-4-11 10:33 | 只看该作者
问题解了(uint x之间有空格,主程序调用电机正传时,子函数名写错了P写成了R),谢谢各位指导!

使用特权

评论回复
11
严斌| | 2014-4-13 18:09 | 只看该作者
细心仔细,共勉共勉

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝