新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 89S51輸出信號來驅動一個步進馬達c程序

        89S51輸出信號來驅動一個步進馬達c程序

        作者: 時間:2016-11-18 來源:網絡 收藏
        這個程序利用89S51輸出信號來驅動一個步進馬達/*

        Target:89S51

        本文引用地址:http://www.104case.com/article/201611/315591.htm

        程序描述:這個程序利用89S51輸出信號來驅動一個步進馬達*/

        /* ***************************************************** */

        #include

        #define TIMER0_COUNT 0xEE11/*10000h-((12,000,000/(12*FREQ))*/

        #define STOP 0

        #define FORWARD 1

        #define BACKWARD 2

        char gotkey();

        code forward[4]={0XFE,0XFD,0XFB,0X07};

        code backward[4]={0X07,0XFB,0XFD,0XFE};

        unsigned char timer0_tick=0,i=0,times=100,status=1;

        static void timer0_isr(void) interrupt TF0_VECTOR using 1

        {

        TR0=0;

        TL0=(TIMER0_COUNT & 0x00FF);

        TH0=(TIMER0_COUNT >> 8);

        TR0=1;

        timer0_tick++;

        if (timer0_tick==times) {

        i++;

        if(i==4) i=0;

        timer0_tick=0;

        if (status==FORWARD) P1=forward[i];

        if (status==BACKWARD) P1=backward[i];

        }

        }

        static void timer0_initialize(void)

        {

        EA=0;

        timer0_tick=0;

        TR0=0;

        TMOD=0x01;

        TL0=(TIMER0_COUNT & 0x00FF);

        TH0=(TIMER0_COUNT >> 8);

        PT0=0;

        ET0=1;

        TR0=1;

        EA=1;

        }

        void main (void) {

        char command;

        timer0_initialize();

        do {

        command=gotkey();

        if(command==15) status=FORWARD; //按下F鍵

        if(command==11) status=BACKWARD; //按下B鍵

        if(command==12) status=STOP; //按下C鍵

        if((command==10) && (times>1)) times=times/2;

        //按下A鍵

        if(command==13) times=times*2; //按下D鍵

        } while (1); /* 無窮循環 */

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 高碑店市| 泰和县| 东丰县| 乐昌市| 牙克石市| 乳源| 确山县| 工布江达县| 筠连县| 库伦旗| 安达市| 上高县| 霞浦县| 简阳市| 黔江区| 南漳县| 西乌珠穆沁旗| 定兴县| 英超| 禄丰县| 咸宁市| 忻州市| 普安县| 淅川县| 平山县| 华安县| 深泽县| 分宜县| 华阴市| 亳州市| 江孜县| 丰宁| 靖安县| 石门县| 申扎县| 宜兰市| 乌拉特中旗| 晋宁县| 昭通市| 孝昌县| 金溪县|