[討論] 同樣的程式碼 卻不同的結果@ @

看板ASM作者 (盜版神話)時間11年前 (2013/08/02 21:26), 編輯推噓3(307)
留言10則, 5人參與, 最新討論串1/2 (看更多)
這個問題困擾我很久了... 我想利用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

08/03 04:16, , 1F
用的也是同一個硬體嗎?另外同學也是89S52?
08/03 04:16, 1F

08/03 04:19, , 2F
題外話一下= =,我最近有時出現同一程式碼(C51)用C51系
08/03 04:19, 2F

08/03 04:20, , 3F
列跟S51系列會有不同問題出現
08/03 04:20, 3F

08/03 04:22, , 4F
原PO可以先作硬體排除再對程式碼下手,同個程式應該不會
08/03 04:22, 4F

08/03 04:23, , 5F
有太大問題(除非燒錄中出錯= =+)
08/03 04:23, 5F
恩恩 我同學也是用89S52 您說由硬體排除,我昨天也試過將所有的零件都換新的(89S52,電容,振盪器等) 除了電變與無刷馬達我沒換外 其餘的都換過了 所以我在想會不會是程式碼中有我沒法發現的BUG存在 謝謝你的回覆 ※ 編輯: alexanjou 來自: 36.239.250.217 (08/03 10:53)

08/03 13:19, , 6F
有示波器可以看一下你的PWM有沒有照預期的速度變化嗎?
08/03 13:19, 6F

08/03 16:45, , 7F
馬達的回授有偏差嗎? 示波器看沒問題就是馬達的問題了。
08/03 16:45, 7F

08/03 23:56, , 8F
恩恩 好 周一去試試看
08/03 23:56, 8F
還是說我的code本身有問題是我沒注意到的? 有高手可以撥冗幫我檢查一下嗎? 感激不盡> <" ※ 編輯: alexanjou 來自: 36.239.250.217 (08/04 20:32)

08/04 21:30, , 9F
可能是馬達懷掉 ?當初我也是馬達不動,拉了示波器看波
08/04 21:30, 9F

08/04 21:30, , 10F
形才確定code沒錯,結果是馬達壞了
08/04 21:30, 10F
我剛已經有接示波器了 有出現預期要出現的圖形(即按按鈕會有變化) 但 如果我接上馬達的訊號線 示波器上的圖形就會跑掉 馬達也無法如期運轉 馬達的電源可以用電供12v 還是一定給用電池? 我目前覺得是馬達或是電變故障的可能比較大~~ ※ 編輯: alexanjou 來自: 140.116.179.155 (08/05 15:44)
文章代碼(AID): #1H-xESEV (ASM)
文章代碼(AID): #1H-xESEV (ASM)