标题: 串口发送数据到STC12C5A60S2控制步进电机的正反转 [打印本页]

作者: 专属的魔术师    时间: 2017-5-6 11:43
标题: 串口发送数据到STC12C5A60S2控制步进电机的正反转
串口发送数据到STC12C5A60S2控制步进电机的正反转,延时改了很多次了都不行,可是这个程序我在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;                //电机
sbit b1=P2^1;
sbit c1=P2^2;
sbit d1=P2^3;         

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

void main()
{  
        SCON=0X50;                        //设置为工作方式1
        TMOD=0X20;                        //设置计数器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                                //计数器初始值设置,注意波特率是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); }
               
                }  


作者: 专属的魔术师    时间: 2017-5-6 12:05
我把200~10000内的延时都试了,电机还是一点反应都没




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1