标题: 求大佬帮我看看单片机程序哪里有错,实在看不出了 [打印本页]

作者: 3042974988    时间: 2021-7-27 16:52
标题: 求大佬帮我看看单片机程序哪里有错,实在看不出了
#include<reg52.h>
unsigned long beats = 0;
void StartMotor (unsigned long angle);
void main()//zd
{
EA=1;
TMOD=0x01;
TH0 =0xF8;
ET0 =1;
TR0 =1;
        StartMotor(360*2);
  while (1);
}
void StartMotor (unsigned long angle);
{
EA=0;
beats=(angle*4076)/360;
EA=1;
}
void ZD0() interrupt 1
{ unsigned char tmp;
    static unsigned char index =0;
unsigned char code BeatCode [8]= {0xE,0xC,0xD,0x9, 0xB, 0x3, 0x7,};
TH0=0xF8;
TL0=0xCD;
if (beats!=0)
{
        tmp = P1;
tmp=tmp&0xF0;
tmp=tmp | BeatCode [index];
index++;
index=index &0x07
beats--;
}
else
{
P1=P1 |0x0F;
}
}

作者: angmall    时间: 2021-7-27 16:52
改成这样

index=index &0x07;   //<<--这一句后面要分号“;”   
beats--;
作者: 3042974988    时间: 2021-7-27 16:55
这是错误提示

作者: 294479435    时间: 2021-7-27 17:34
void StartMotor (unsigned long angle);这一句后面不要分号“;”
作者: 3042974988    时间: 2021-7-27 17:40
294479435 发表于 2021-7-27 17:34
void StartMotor (unsigned long angle);这一句后面不要分号“;”

还有一个错误

作者: 名字不是重点    时间: 2021-7-27 17:50
提示都说的很清楚了。按提示的行去找就能发现问题。
作者: 3042974988    时间: 2021-7-27 17:59
真不知道怎么改 ,我知道是那行,语法错误,可是我看不出有什么错
作者: 3042974988    时间: 2021-7-27 18:08
angmall 发表于 2021-7-27 17:59
改成这样

index=index &0x07;   //

哇,这都没看到。。。。
作者: isyido    时间: 2021-7-27 20:10
BeatCode定义为8,,花括号里面只有七个。
作者: isyido    时间: 2021-7-27 20:11
angmall 发表于 2021-7-27 17:59
改成这样

index=index &0x07;   //

这个错也真是无敌了!新手小朋友,要仔细点啊!
作者: 3042974988    时间: 2021-7-27 20:12
isyido 发表于 2021-7-27 20:11
这个错也真是无敌了!新手小朋友,要仔细点啊!

哭~.....................
作者: isyido    时间: 2021-7-27 20:19
感觉你的StartMotor方法没意义啊直接计算即可啊!如果你后面有其它用处,那你要仔细想想,里面的计算要考虑下angle是否会很大导致*4076是否越界
作者: 3042974988    时间: 2021-7-27 20:19
isyido 发表于 2021-7-27 20:10
BeatCode定义为8,,花括号里面只有七个。

好的,发现了谢谢你
作者: 3042974988    时间: 2021-7-27 20:33
isyido 发表于 2021-7-27 20:19
感觉你的StartMotor方法没意义啊直接计算即可啊!如果你后面有其它用处,那你要仔细想想,里面的计算要考虑 ...

啊,这是我照着一些例程弄的,我也不知道,步进电机我还在学




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1