找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 2454|回复: 1
打印 上一主题 下一主题
收起左侧

串口发送数据到STC12C5A60S2控制步进电机的正反转

[复制链接]
跳转到指定楼层
楼主
ID:175798 发表于 2017-5-6 11:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
串口发送数据到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); }
               
                }  

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

举报

沙发
ID:175798 发表于 2017-5-6 12:05 | 只看该作者
我把200~10000内的延时都试了,电机还是一点反应都没
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表