新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 控制步進電機正反轉的實際應用程序

        控制步進電機正反轉的實際應用程序

        作者: 時間:2012-06-26 來源:網絡 收藏

        calldog;
        calltime(200);
        calldog;
        callwrenable;/*置存儲器寫使能*/
        addrl=00h;/*置存儲器地址*/
        dat=l(1);
        callwbyte;/*將變量L(1)的值寫入存儲器00h位置*/
        callwrenable;
        addrl=01h;
        dat=l(2);
        callwbyte;/*將變量L(2)的值寫入存儲器01h位置*/
        end;
        endincdata;
        decdata:PROCEDURE;/*參數修改---"減"鍵處理子程序-*/
        IFp11=0THEN/*k8鍵處理子程序*/
        do;
        dowhilep11=0;
        calldog;
        end;
        DATA=DATA-1;/*設定值-1*/
        ifdata=0thendata=99;
        L(1)=dataMOD10;
        L(2)=data/10;
        calldisplay(l(1),l(2));
        calldog;
        calltime(200);
        calldog;
        calltime(200);
        calldog;
        callwrenable;
        addrl=00h;
        dat=l(1);
        callwbyte;
        callwrenable;
        addrl=01h;
        dat=l(2);
        callwbyte;
        end;
        ENDdecdata;

        starton:PROCEDURE;/*start*/
        declaresdbyte;
        ifp12=0THEN/*K9鍵處理子程序*/
        do;
        dowhilep12=0;
        calldog;
        end;
        ifp17=0thenok=0;/*如果p17口線上有信號輸入,則運行標志置0(停止運行)*/
        p13=1;/*置正向運轉*/
        calltime(200);
        calldog;
        dowhileok=1;/*當運行標志為1時,執行速度延時操作*/
        dosd=0todata;/*根據設定值data的數值延時來確定運行時的脈沖給定速度*/
        calldog;
        end;
        end;
        ENDstarton;

        step:PROCEDURE;/*step*/
        declaresdbyte;
        p13=1;/*置正向運轉*/
        calltime(200);
        calldog;
        IFp33=0THEN/*k11鍵處理子程序*/
        do;
        ifp17=0thenok=0;/*如果p17上有信號輸入,則停止運行*/
        dowhilep33=0;
        dosd=0todata;/*調用延時,調整步進電機的運行速度*/
        calldog;
        calltime(2);
        end;
        callrun;
        calldog;
        end;
        end;
        ok=0;
        ENDstep;

        back:PROCEDURE;/*反向運行處理子程序*/
        declaresdbyte;
        IFp34=0THEN
        do;
        dowhilep34=0;
        calldog;
        end;
        ifp15=0thenok=0;/*反向運行時,如果遇到p15上有信號輸入,則停止步進電機運行*/
        p13=0;/*置步進電機反向運行*/
        calltime(200);
        calldog;
        dowhileok=1;
        dosd=0todata;/*根據設定值調節步進電機的運行速度*/
        calldog;
        calltime(2);
        end;
        callrun;
        if(p15=0orp32=0)thenok=0;/*p15或p32口線任意一個有信號輸入,停止運行*/
        end;

        end;
        ENDback;

        MAIN$PROGRAM:/*初始化主程序*/
        ea=0;/*關中斷*/
        SCON=00h;/*置串口方式0,串行數據輸出模式*/
        PCON=00h;
        tmod=11h;
        et0=1;
        enable;/*開中斷(ea=1)*/
        SCK=0;cs=1;/*定義存儲器口線初始狀態*/
        callwrenable;
        callwrregister;/*看門狗存儲器初始化*/
        callwrenable;
        calldog;
        p2=0ffh;/*初始化各個口線的狀態*/
        p1=0ffh;ok=0;
        p14=1;p32=1;p33=1;p34=1;
        p13=1;
        ADDRL=00h;/*上電復位后從存儲器中讀出設定的速度值*/
        CALLrbyte;
        l(1)=dat;
        addrl=01h;
        callrbyte;
        l(2)=dat;
        DATA=L(1)+L(2)*10;/*將讀出的值合并成十進制,存入變量data中*/
        /*以下是主循環程序*/
        LOOP:
        IFp10=0THENCALLincdata;/*檢測各個按鍵是否有按下*/
        IFp11=0THENCALLdecdata;
        ifp12=0then
        do;
        ok=1;
        callstarton;
        end;
        ifp34=0then
        do;
        ok=1;
        callback;
        end;
        ifp33=0then
        do;
        ok=1;
        callstep;
        end;
        calldog;
        CALLDISPLAY(L(1),L(2));/*將設定值送164顯示*/
        calldog;
        CALLTIME(100);
        calldog;
        GOTOLOOP;
        ENDSTART;

        光耦相關文章:光耦原理


        存儲器相關文章:存儲器原理


        脈沖點火器相關文章:脈沖點火器原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阳原县| 河间市| 延庆县| 太康县| 怀远县| 泗阳县| 西畴县| 瓦房店市| 紫金县| 永和县| 明光市| 永康市| 龙南县| 土默特左旗| 冕宁县| 花莲县| 博乐市| 罗城| 石屏县| 康定县| 南昌市| 乌拉特后旗| 三都| 高州市| 兴安盟| 福海县| 德格县| 友谊县| 百色市| 白山市| 深圳市| 英吉沙县| 赤壁市| 平安县| 交城县| 平度市| 安福县| 秭归县| 武冈市| 西林县| 肇庆市|