作者alexanjou (盗版神话)
看板ASM
标题[讨论] 同样的程式码 却不同的结果@ @
时间Fri Aug 2 21:26:50 2013
这个问题困扰我很久了...
我想利用89S52控制我的无刷直流马达
程式码成功的compiler过 也能烧到8051里了
电路图也蛮简单的 我也很确定不会接错
可是 为什麽我接到直流马达时 却始终听到错误的声音「滴、滴、滴」
而我同学却说一样的程式码 他的马达就能动
程式的设计是这样的
首先
在马达的自检阶段 我的频宽是1000
接着 我按P2的按钮 开始增加其频宽
最後达到2000 马达开始运转
而我现在马达 只有开机声 但是没有自检的声音
这个问题让我快要抓狂了QQ 我实在不知道是哪边出了错
希望能有大大给我一些建议
感谢
(以下附上我的程式码)
#include "reg51.h"
//for 8051 12MHz
//range 1100~2100
//0x44c~0x834 12bit
int pwm=1100;
int base=20000;
int speed(int motor,int c);
void wait();
void main ()
{
P1=0x00;
P2=0xff;
IE=0x8A;
TH1=0xb1;
TL1=0xe0;
TH0=(65536-pwm)/256;
TL0=(65536-pwm)%256;
TMOD=0x11;
TCON=0x50;
while(1)
{
if(P2==0x7f)
{
pwm=speed(pwm,1);
wait();
P2=0xff;
}else if(P2==0xbf)
{
pwm=speed(pwm,0);
wait();
P2=0xff;
}
}
}
void low(void) interrupt 1// time0
{
P1=0x00;
TR0=0;
TH0=(65536-pwm)/256;
TL0=(65536-pwm)%256;
}
void high(void) interrupt 3// time1
{
TH1=0xb1;
TL1=0xe0;
P1=0xff;
TR0=1;
}
int speed(int motor,int c)
{
if(motor<2100 && c==1)
motor=motor+50;
else if(motor>1100 && c==0)
motor=motor-50;
return motor;
}
void wait()
{
while(P2!=0xff)
{P2=0xff;}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.166.5.9
1F:→ cwl751005:用的也是同一个硬体吗?另外同学也是89S52? 08/03 04:16
2F:→ cwl751005:题外话一下= =,我最近有时出现同一程式码(C51)用C51系 08/03 04:19
3F:→ cwl751005:列跟S51系列会有不同问题出现 08/03 04:20
4F:→ cwl751005:原PO可以先作硬体排除再对程式码下手,同个程式应该不会 08/03 04:22
5F:→ cwl751005:有太大问题(除非烧录中出错= =+) 08/03 04:23
恩恩 我同学也是用89S52
您说由硬体排除,我昨天也试过将所有的零件都换新的(89S52,电容,振荡器等)
除了电变与无刷马达我没换外 其余的都换过了
所以我在想会不会是程式码中有我没法发现的BUG存在 谢谢你的回覆
※ 编辑: alexanjou 来自: 36.239.250.217 (08/03 10:53)
6F:推 ruemann:有示波器可以看一下你的PWM有没有照预期的速度变化吗? 08/03 13:19
7F:推 damody:马达的回授有偏差吗? 示波器看没问题就是马达的问题了。 08/03 16:45
8F:→ alexanjou:恩恩 好 周一去试试看 08/03 23:56
还是说我的code本身有问题是我没注意到的? 有高手可以拨冗帮我检查一下吗?
感激不尽> <"
※ 编辑: alexanjou 来自: 36.239.250.217 (08/04 20:32)
9F:推 derek5566:可能是马达怀掉 ?当初我也是马达不动,拉了示波器看波 08/04 21:30
10F:→ derek5566:形才确定code没错,结果是马达坏了 08/04 21:30
我刚已经有接示波器了 有出现预期要出现的图形(即按按钮会有变化)
但 如果我接上马达的讯号线 示波器上的图形就会跑掉 马达也无法如期运转
马达的电源可以用电供12v 还是一定给用电池?
我目前觉得是马达或是电变故障的可能比较大~~
※ 编辑: alexanjou 来自: 140.116.179.155 (08/05 15:44)