標(biāo)題: 串口發(fā)送數(shù)據(jù)到STC12C5A60S2控制步進(jìn)電機(jī)的正反轉(zhuǎn) [打印本頁]

作者: 專屬的魔術(shù)師    時間: 2017-5-6 11:43
標(biāo)題: 串口發(fā)送數(shù)據(jù)到STC12C5A60S2控制步進(jìn)電機(jī)的正反轉(zhuǎn)
串口發(fā)送數(shù)據(jù)到STC12C5A60S2控制步進(jìn)電機(jī)的正反轉(zhuǎn),延時改了很多次了都不行,可是這個程序我在51上試了,是可以用的,到底哪里錯了?各位大神幫我看看:
#include<12c5a.h>
unsigned char flag;
unsigned char w,i,a;
unsigned int j;

void motor();void motor_z();
void motor_f();

sbit a1=P2^0;                //電機(jī)
sbit b1=P2^1;
sbit c1=P2^2;
sbit d1=P2^3;         

void delay(unsigned char z)
{
        while(z--);
}

void main()
{  
        SCON=0X50;                        //設(shè)置為工作方式1
        TMOD=0X20;                        //設(shè)置計數(shù)器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //計數(shù)器初始值設(shè)置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打開接收中斷
        EA=1;                                                //打開總中斷
        TR1=1;         
        while(1);
        }   
        void ser() interrupt 4
        {  
                RI=0;  
                flag=SBUF;  
                if(flag=='1')  
                {  
                                motor_z();                       
                }  else if(flag=='2')  
                {   
                                motor_f();
                 }  


        }         

void motor_z()
{
                while(1){
                                a1=1;b1=0;c1=0;d1=0;  //1
                                delay(5000);  
                                a1=1;b1=1;c1=0;d1=0;  //2
                                delay(5000);   
                                a1=0;b1=1;c1=0;d1=0;  //3
                                delay(5000);   
                                a1=0;b1=1;c1=1;d1=0;  //4
                                delay(5000);
                                a1=0;b1=0;c1=1;d1=0;  //5
                                delay(5000);   
                                a1=0;b1=0;c1=1;d1=1;  //6
                                delay(5000);  
                                a1=0;b1=0;c1=0;d1=1;  //7
                                delay(5000);
                                a1=1;b1=0;c1=0;d1=1;  //8
                                delay(5000); }
                }

void motor_f()
        {
                 while(1){
                                a1=1;b1=0;c1=0;d1=1;  //8
                                delay(5000);  
                                a1=0;b1=0;c1=0;d1=1;  //7
                                delay(5000);   
                                a1=0;b1=0;c1=1;d1=1;  //6
                                delay(5000);   
                                a1=0;b1=0;c1=1;d1=0;  //5
                                delay(5000);
                                a1=0;b1=1;c1=1;d1=0;  //4
                                delay(5000);   
                                a1=0;b1=1;c1=0;d1=0;  //3
                                delay(5000);  
                                a1=1;b1=1;c1=0;d1=0;  //2
                                delay(5000);
                                a1=1;b1=0;c1=0;d1=0;  //1
                                delay(5000); }
               
                }  


作者: 專屬的魔術(shù)師    時間: 2017-5-6 12:05
我把200~10000內(nèi)的延時都試了,電機(jī)還是一點反應(yīng)都沒




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1