全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1051
推到 Plurk!
推到 Facebook!

如何設定步進馬達的角度~並傳送至另一個8051!

缺席
big_eyes
一般會員


發表:28
回覆:52
積分:16
註冊:2005-03-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-27 13:52:17 IP:218.169.xxx.xxx 未訂閱
廣 告 請問一下~ 我現在專題需要把步進馬達的角度設為DB(90~180度,每20度為一個位址),請問要怎麼設定呢?? 並且要怎麼傳送給另一個8051執行動作呢?? 請問那MODE要怎麼設定呢?? 另一個又該如何接收丫?? 拜託了~~很急~~希望各位老大能幫幫忙~~ 拜託~拜託!!
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-27 17:46:58 IP:61.66.xxx.xxx 未訂閱
兩次我只要看你的文章 我的瀏覽器就當了 奇怪@@~ 請把你的問題 跟你要的動作 寫清楚 不然我想幫也幫不上 這篇文章跟另一篇文章 看不懂寫什麼 什麼角度設為DB??? 怎麼怎麼傳? 兩顆8051都是你寫的 愛怎麼傳就怎麼傳 MODE如何設定? 什麼的MODE 要設定成怎樣 如何收? 怎麼傳就怎麼收阿 ------------------- 美好的事物 稍縱即逝
big_eyes
一般會員


發表:28
回覆:52
積分:16
註冊:2005-03-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-27 19:13:54 IP:218.169.xxx.xxx 未訂閱
因為我要讓步進馬達再我設定的角度征測物體, 所以必須設定步進馬達在哪些角度感測到物體, 再將感測到物體的角度傳去給51_2執行運轉追蹤, DB就是例如LED燈不是有設定TABLE的ㄇ!! 就是要利用那種方法來設定角度~ EX:
   SteepMotorABC:
        MOV        DPTR,#SteepMotor
        MOVC        A,@A DPTR
        RET
SteepMotor:
        DB        #01H
        DB        #02H
        DB        #04H
但我就是不知道該怎麼設定丫.. 請大大給予指導一下~拜託!! 請問~我假使要傳送角度到51_2的話, 除了連接P3.0、P3.1以外~還有別的方法可以傳輸的ㄇ?? 因為我用特殊功能來寫~傳送不過去>"< 想說是否有比較簡單的方法來相互連結2個8051?? 充滿疑問中~請大大多指教!! 謝謝~
big_eyes
一般會員


發表:28
回覆:52
積分:16
註冊:2005-03-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-28 22:30:29 IP:218.164.xxx.xxx 未訂閱
就像這篇程式阿~ 我不知道他怎麼設定角度的~ 不過我知道它只設定了0~90~180度角~所以設定了3個DB... 但是我不懂他DB設定的01~02~04是什麼意思?? 請各位大大能幫我解答ㄇ?? 還有請問~假使我要設定其他角度要怎麼設定呢?? 拜託大大了~~    
BUFFER        EQU        30H                
        ORG        00H
        JMP     START        ;規避00H至2FH間之中斷向量執行位址
        ORG     31H
STARTS:
        MOV        TMOD,#00100001B        ;設定TIMER0為模式1, TIMER1為模式2
        ANL        PCON,#01111111B                ;設定鮑率為9600 BIT/SEC
        MOV     TH1,#FDH
        SETB    TR1                           ;啟動TIMER1
        MOV     SCON,#01000000B              ;串列埠MODE1 設定為傳送
;================== 讀取串列埠資料 ==============================
LOOP:
        MOV        A,#05H                ;啟動UART的讀入接收資料動作資料
        MOV        SBUF,A
KLOOP:
        JBC        TI,START
        JMP        KLOOP        
START:
        MOV        P0,#00H
        MOV        P1,#00H
        MOV        P2,#00H
        MOV        R1,#77H        
        MOV        R2,#25
        MOV        R5,#50
        MOV        R6,#00H
        MOV        R7,#00H
        SETB        P1.0
;================SONAR 定位 (起始位置0度)================
RIGHT:                                        ;尋找起始位置
        JB        P0.2,INT_EHCO
        MOV        A,R1
        RR        A
        MOV        R1,A
        MOV        P2,A
        MOV        R4,#4
        CALL    DELAY1
        DJNZ        R2,RIGHT
        MOV        R2,#50
LIFT:
        JB        P0.2,INT_EHCO
        MOV        A,R1
        RL        A
        MOV        R1,A
        MOV        P2,A
        MOV        R4,#4
        CALL    DELAY1
        DJNZ        R2,LIFT
        MOV        R2,#50
        JMP        RIGHT
;============ 信號激發&接收(偵測障礙物體&距離)================
INT_EHCO:                                ;開始執行偵測障礙物主程式
        CLR        P0.0
        MOV         R3,#4
        CALL        DELAY                                
        SETB        P0.0
        CALL        DELAY_SONAR
        CLR        P0.0
EHCO:
        INT_EHCO1:                ;開始執行偵測障礙物主程式
        CLR        P0.0
        MOV         R3,#4
        CALL        DELAY                                
        SETB        P0.0
        CALL        DELAY_SONAR
        CLR        P0.0
EHCO1:            JB        P0.1,ORIGINATE            JB        P0.1,ORIGINATE            JB        P0.1,ORIGINATE            JB        P0.1,ORIGINATE            JB        P0.1,ORIGINATE            JB        P0.1,ORIGINATE            JB        P0.1,ORIGINATE            JB        P0.1,ORIGINATE            JB        P0.1,ORIGINATE
        CLR        P1.0
        JMP        INT_EHCO    ORIGINATE:                                ;偵測到障礙物
        SETB        P1.0                ;傳送訊號至8951_2停止行走
        MOV        A,R7
        CALL        SteepMotorABC
        MOV        R6,A
        MOV        A,#01H
        XRL        A,R6
        JZ        STEEP
        MOV        A,#02H
        XRL        A,R6
        JZ        STEEP1
        MOV        A,#04H
        XRL        A,R6
        JZ        STEEP2
        JMP        INT_EHCO
STEEP:
        CALL        CALL_STEEP
        MOV        R7,#01H
        JMP        INT_EHCO
STEEP1:
        CALL        CALL_STEEP1
        MOV        R7,#02H
        JMP        INT_EHCO
STEEP2:
        CALL        CALL_STEEP
        MOV        R7,#00H
        JMP        START                ;繼續偵測障礙物
;=========================================================
SteepMotorABC:
        MOV        DPTR,#SteepMotor
        MOVC        A,@A DPTR
        RET
SteepMotor:
        DB        #01H
        DB        #02H
        DB        #04H
        
;=====================STEEP MOTOR================================
CALL_STEEP:
        MOV        R2,#50
RIGHT1:
        MOV        A,R1
        RL        A
        MOV        R1,A
        MOV        P2,A
        MOV        R4,#2
        CALL    DELAY1
        DJNZ        R2,RIGHT1
        RET
CALL_STEEP1:
        MOV        R2,#100
RIGHT2:
        MOV        A,R1
        RR        A
        MOV        R1,A
        MOV        P2,A
        MOV        R4,#2
        CALL    DELAY1
        DJNZ        R2,RIGHT2
        RET
;================ 延遲副程式 ==============================
DELAY:        
        MOV     TMOD,#01        ;設定Timer1為16位元計時模式        ;50ms產生溢位
        MOV        TL0,#<(65536-46080)        ;儲存16位元之低8位元
        MOV        TH0,#>(65536-46080)        ;儲存16位元之高8位元
        SETB        TR0                        ;啟動計時器
WAIT:        
        JBC        TF0,OVERFLOW        ;測試是否計時完畢產生溢位
        JMP        WAIT                ;否, 則持續測試溢位之發生
OVERFLOW:
        CLR        TR0                        ;關閉計時器
        DJNZ        R3,DELAY
        RET                
;====================================================================
DELAY1:        
        MOV     TMOD,#01        ;設定Timer1為16位元計時模式        ;50ms產生溢位
        MOV        TL0,#<(65536-46080)        ;儲存16位元之低8位元
        MOV        TH0,#>(65536-46080)        ;儲存16位元之高8位元
        SETB        TR0                        ;啟動計時器
WAIT1:        
        JBC        TF0,OVERFLOW1        ;測試是否計時完畢產生溢位
        JMP        WAIT1                ;否, 則持續測試溢位之發生
OVERFLOW1:
        CLR        TR0                        ;關閉計時器
        DJNZ        R4,DELAY1
        RET                
;================= SONAR_INT_TIMER ================================
DELAY_SONAR:        
        MOV     TMOD,#01                ;設定Timer1為16位元計時模式        ;SONAR_INT_TIMER
        MOV        TL0,#<(65536-2652)        ;儲存16位元之低8位元
        MOV        TH0,#>(65536-2652)        ;儲存16位元之高8位元
        SETB        TR0                        ;啟動計時器
WAITS:        
        JBC        TF0,OVERFLOWS        ;測試是否計時完畢產生溢位
        JMP        WAITS                ;否, 則持續測試溢位之發生
OVERFLOWS:
        CLR        TR0                        ;關閉計時器
        
        RET
        END
系統時間:2024-05-15 22:42:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!